电脑桌面
添加小米粒文库到电脑桌面
安装后可以在桌面快捷访问

udp文件传输有源码VIP免费

udp文件传输有源码_第1页
1/9
udp文件传输有源码_第2页
2/9
udp文件传输有源码_第3页
3/9
UDP 本身是一种无连接的协议。它只管发送,而不需要知道,发送的包是不是准确的到达了目的地。所以它具有发送效率高的特点,同时也具有丢包的弱点。但如果对 udp 加一些验证和重发机制,就能很大程度上避免丢包的情况,达到稳定的传输。同时,此种方式的传输速度会比 TCP 方式的传输快很多。以下是一种串行的带验证重发机制的UDP 传输文件,源代码,client 负责发文件,server 负责接文件。希望对大家有帮助。程序中,发送的包是自己定义的,这样除了可以将需要发送的数据发送过去外,还可以将一些控制信息发过去。 SERVER 端: #include #include #include #include #include #pragma comment( lib, "ws2_32.lib" ) #define PORT 8000 #define SERVER "192.168.1.211" SOCKET sock; int sendexit=0;//控制发送线程状态的全局变量 int recvexit=0;//控制接收程状态的全局变量 int filesize=1;//记录文件大小的全局变量 int recvsize=0;//记录文件大小的全局变量 int id=1; sockaddr_in server; int len =sizeof(server); struct baohead//包头 { int size; int id; int recvsize; }; typedef baohead ElemType; baohead datahead; struct recvbuf//包格式 { ElemType head;//包头 char buf[1024];//存放数据的变量 int bufSize;//存放数据长度的变量 }; struct recvbuf data; DWORD WINAPI recvfunc(LPVOID lpParam);//接收线程 int main() { WSADATA wsadata; WSAStartup(MAKEWORD(2,2),&wsadata); sock=socket(AF_INET,SOCK_DGRAM,0);//建立SOCKET if(sock==SOCKET_ERROR) { printf("socket 创建失败\n"); return 0; } sockaddr_in addr; addr. sin_family=AF_INET; addr. sin_port= htons(PORT); addr. sin_addr.s_addr= inet_addr(SERVER); int nResult=bind(sock,(sockaddr*)&addr,sizeof(addr));// 绑定SOCKET if(nResult==SOCKET_ERROR) { printf("绑定SOCKET 有问题. \n"); return 0; } else { printf("服务启动成功!\n"); } DWORD ID; HANDLE handle=CreateThread(NULL,0,recvfunc,0,0,&ID);//创建接收线程 int i=0; if((recvexit!=1) && (i++<40))//主线程为创建接收线程等待40 秒,如果创建成功则不等待。 { Sleep(1000); } if(recvexit!=1)//40...

1、当您付费下载文档后,您只拥有了使用权限,并不意味着购买了版权,文档只能用于自身使用,不得用于其他商业用途(如 [转卖]进行直接盈利或[编辑后售卖]进行间接盈利)。
2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。
3、如文档内容存在违规,或者侵犯商业秘密、侵犯著作权等,请点击“违规举报”。

碎片内容

udp文件传输有源码

确认删除?
VIP
微信客服
  • 扫码咨询
会员Q群
  • 会员专属群点击这里加入QQ群
客服邮箱
回到顶部