资源描述:
《udp发送接收程序》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、带确认机制的udp发送程序,在千兆网卡下速度能达到400M/s(无差错传输)。服务器界面(前面数字代表相应命令):#include#include#include#include#include#include#pragmacomment(lib,"ws2_32.lib")SOCKETsock;intsendexit=0;intrecvexit=0;intfilesize=1;intrecvsize
2、=0;intid=1;sockaddr_inserver;intlen=sizeof(server);structbaohead{intsize;intid;intrecvsize;};typedefbaoheadElemType;baoheaddatahead;structrecvbuf{ElemTypehead;charbuf[60*1024];intbufSize;};structrecvbufdata;DWORDWINAPIrecvfunc(LPVOIDlpParam);intrecv_flag=0;char
3、SERVER[16]="192.168.1.101";intPORT=8000;charfileaddress[40]="E:\1.exe";voidprintffunc(){printf("/********************************************************/");printf("");printf("提示信息:");printf("");printf("默认值");printf("1.本地IP地址192.168.1.101");printf("2
4、.本地端口号8000");printf("3.接收文件路径E:\1.exe");printf("4.开始接收");printf("/********************************************************/");printf("");}voiddesktop(){intcmd;printffunc();for(;;){printf("pleaseenterthecmd>");scanf("%d",&cmd);getchar();switch(cmd){case
5、1:printf("inputyourip_addr>");gets(SERVER);//getchar();break;case2:printf("inputyourport_num>");scanf("%d",&PORT);//getchar();break;case3:printf("file_addrtosave>");gets(fileaddress);//getchar();break;case4:printf("开始接收...");recv_flag=1;break;default:printf("
6、cmdiserror,pleaseinputagain");}if(recv_flag==1)break;}}intmain(){HANDLEhEvent=CreateEvent(NULL,FALSE,FALSE,NULL);WSADATAwsadata;WSAStartup(MAKEWORD(2,2),&wsadata);sock=socket(AF_INET,SOCK_DGRAM,0);if(sock==SOCKET_ERROR){printf("socket创建失败!");return0;}deskto
7、p();sockaddr_inaddr;addr.sin_family=AF_INET;addr.sin_port=htons(PORT);addr.sin_addr.s_addr=inet_addr(SERVER);intnResult=bind(sock,(sockaddr*)&addr,sizeof(addr));if(nResult==SOCKET_ERROR){printf("绑定SOCKET有问题!");return0;}else{printf("启动服务器端成功!");}DWORDID;HAND
8、LEhandle=CreateThread(NULL,0,recvfunc,0,0,&ID);inti=0;if(recvexit!=1&&(i++<40)){Sleep(1000);}if(recvexit!=1){printf("接收线程创建失败!");return0;}else{printf("接收线程创建成功!");}while