飞秋文件传输模拟实现代码
最近一直在研究基于WINSOCK的文件传输,文件传输时会出现各种各样的情况处理起来其实也挺麻烦的这里不一一说明,大家看代码吧,这是最新版 飞秋 http://www.freeeim.com/ 的代码,这个是飞秋文件传输模拟实现代码,完整代码可以网上搜索获取。
#ifndef _XEIM_SEND_FILE_LOGIC
#define _XEIM_SEND_FILE_LOGIC
#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000
#include "afxmt.h" // CCritical section..
#include <winsock2.h>
#include "XEIM_SendFiles.h"
#include <map>
using namespace std;
// 飞秋文件发送接收缓冲大小
#define FILE_BUFFER_LENGTH 512
typedef struct _recvProcData{
SOCKET sock;
LPVOID logic;
} recvProcData;
// 飞秋文件收发流程
// 1. 用户发送一个文件,程序把文件信息发给接收人,等待接收人确认接收。
// 2. 用户收到一个文件,确认接收,AddRecvFile 建立接收线程,获取侦听的端口并返回。
// 3. 发送方收到接收方的确认接收后,根据对方提供的端口建立文件发送链接。
// 飞秋(FEIQ)整个程序的文件收发管理模块
class XEIM_SendFileLogic
{
private:
map<UINT, XEIM_SendFiles *> m_mapFiles; // 文件列表
UINT m_nFileCount; // 文件列表UID,用于 m_mapFiles;
inline void DeleteData(UINT nIndex);
XEIM_SendFiles * m_pFileInfo;
public:
// 删除列表里的一个文件
BOOL RemoveFileInfo(UINT nMapIndex);
BOOL m_bListen;
UINT m_nThreads; // 当前线程数
SOCKET m_sockListen; // 侦听线程
CCriticalSection m_csThread; // 线程同步器
CCriticalSection m_csFiles; // 文件列表同步器
XEIM_SendFileLogic();
~XEIM_SendFileLogic();
void CloseListenThread();
// 开始接收文件,启动侦听线程
UINT StartRecvFile();
// 开始发送文件
UINT StartSendFile(UINT nDestIndex, UINT nMapIndex);
UINT GetFileSize(LPCTSTR lpszFileName);
// 当前几个文件正在处理,不包括列表里其他未处理文件
UINT GetThreadCount();
// 获取文件列表长度
UINT GetFileCount();
// 获取发送文件信息
XEIM_SendFiles *GetSendFileInfo(UINT nMapIndex);
// 通过 map Index 获取文件信息
XEIM_SendFiles *GetFileInfoByMapIndex(UINT nMapIndex);
// 确认接收文件时用的,获取接收文件信息的MPA ID
UINT GetRecvFileInfoMapIndex(UINT nDestIndex, LPCTSTR lpszUID);
// 添加一个发送文件
UINT AddSendFile(UINT nFileSize, // 文件大小
LPCTSTR szFilePathName, // 文件路径
LPCTSTR szFileName, // 文件名
LPCTSTR szUID // 对方的 UID
);
// 添加一个接收文件
UINT AddRecvFile(UINT nFileSize, // 文件大小
UINT nDestIndex, // FILE DEST UID
LPCTSTR szFileName, // 文件名
LPCTSTR szUID // 对方的 UID
);
// 飞秋侦听线程
static DWORD CALLBACK ListenThreadProc(LPVOID lParam);
static DWORD CALLBACK SendThreadProc(LPVOID lParam); // 文件接收
static DWORD CALLBACK RecvThreadProc(LPVOID lParam); // 文件发送
};
#endif // _XEIM_SEND_FILE_LOGIC
飞秋文件传输模拟实现代码相关推荐
- [飞秋]局域网聊天写的代码旁人从来看不
有些coding fans叫嚣高水平飞秋局域网聊天写的代码旁人从来看不懂,这种叫嚣只能证明他们自己压根不配自称飞秋局域网聊天.代码具有良好的可读性,是飞秋局域网聊天基本的素质需求. 再看看整个linu ...
- 做公益的飞秋(FeiQ)程序代码
丁磊是一个喜欢做公益的 飞秋(FeiQ)程序代码ceo,所以在2005年以个人名义向陶瓷红十字会(不知那时郭小姐是否已在红十字会任职)总会捐了当时国内最大的一笔个人捐款,用一百二十万美元帮助海啸受灾地 ...
- 计算机网络 文件传输小程序代码,懒得打开电脑传文件?这四类小程序把这事解决了...
生命在于静止,主持人吴昕这句火爆的口头禅,诠释了当代人对于"懒"的追求. 懒得出门吃饭,有外卖:懒得下载应用,有小程序... 在办公场景下,更是要"懒"到底,不 ...
- 利用WinPcap模拟网络包伪造飞秋闪屏报文
起因 不知道从什么时候开始,同事开始在飞秋上发闪屏振动了,后来变本加厉,成了每日一闪.老闪回去也比较麻烦,作为程序猿呢,有没有什么偷懒的办法呢?(同事负责用户体验,不大懂编程).然后尝试了以下思路: ...
- 基于python的文件传输程序_7个步骤,教你快速学会用python实现ftp文件传输功能(收藏了)...
文章主要为大家详细介绍了python实现ftp文件传输功能,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下!!! 本文实例为大家分享了python实现ftp文件传输的具体 ...
- java rmi 文件传输_JAVA-RMI实现大文件传输
在使用java-rmi的过程中,必然会遇到一个文件上传的问题,由于在rmi中无法传输文件流(比如rmi中的方法参数不能是FileInputStream之类的),那么我们只好选择一种折中的办法,就是先用 ...
- python网络通信中cs架构_python3基于TCP实现CS架构文件传输
本文实例为大家分享了python3实现CS架构文件传输的具体代码,供大家参考,具体内容如下 1.目标: 基于tcp实现CS架构的文件传输 指令列表:(1)get:从服务器端下载文件 (2)put:向服 ...
- ios xmpp 文件传输
jabber/XMPP文件传输的一些情况 1 jabber/XMPP文件传输的一些情况 大家知道,Jabber/XMPP是一种 XML流技术,解决的问题主要是即时消息和出席信息,XML流技术并不适用于 ...
- 如何使用UDP协议给飞秋发送消息
飞秋使用传输协议为UDP 1.向局域网内某个ip好友的飞秋发送消息 # 1.先导入模块.创建一个套接字 from socket import * updsocket = socket(AF_INET, ...
最新文章
- 把Windows CA根证书安装到iPhone
- 清华唐杰:GPT-3表示能力已经接近人类了,但它有一个阿喀琉斯之踵
- 如何着手学习一个新的PHP框架
- 2021-9-下旬 数据结构-线性表-链表-java代码实现(复习用)
- linux socket bind 内核详解,Socket与系统调用深度分析(示例代码)
- HTML+CSS+JS实现canvas仿ps橡皮擦刮卡效果
- 第六计 / Explosive City (2004)
- C语言cJSON库的使用,解析json数据格式
- 一个批量转换文本文件编码的程序(Python)
- 用无线卡王蹭网的亲身经历和感想
- 【C/C++】通过无类型指针实现泛型拷贝(内存拷贝)
- 是否可以手动运行一次logrotate检查?
- 盘点VB编程重要知识点集合。
- 计算机毕业设计源码—SpringBoot+Vue疫情防控管理系统
- 月薪过万的php面试题目
- 数采仪厂家_环保数采仪生产厂家
- PhantomJS+Selenium+Scrapy抓取巨潮资讯网企业信息
- 如何将exe添加到windows本地服务
- 转:管理者必备技能之全局观:找出复杂环境中的秩序
- GitHub使用gitBash配置用户名和邮箱和远程操作二