版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
课程网络协议编 实验名称UDP多播编 班级7 专业计算机科学与技术学号 实验日期:2015年4月14日报告退发(订正、重做) WindowsSocket(UDP)WindowsSocketAPIUDP据,ReceiverSenderVisualC++6.0,Win7#include<windows.h>#include<winsock.h>#pragma#include<stdio.h>#include<stdlib.h>#defineMCASTADDR "234.5.6.7"//缺省多播组地址#defineMCASTPORT #defineBUFSIZE BOOLbSender=FALSE, //Actassender?bLoopBack=FALSE; //Disableloopback?DWORDdwInterface, //Localinterfacetobindto //Multicastgrouptojoin //Numberofmessagestosend/receiveshort //Portnumberto//Function:// Printusageinformationandvoidusage(char{printf("usage:%s-s-m:str-p:int-i:str-l-n:int\n",printf("-s Actasserver(senddata);otherwise\n"); receivedata.\n");printf("-m:strDotteddecimalmulticastIPaddrestojoin\n"); Thedefaultgroupis:%s\n",MCASTADDR);printf("-p:intPortnumbertoprintf("Thedefaultportis:%d\n",MCASTPORT);printf("-i:strLocalinterfacetobindto;bydefault\n");printf("useINADDRY_ANY\n");printf("- Disableprintf("-n:intNumberofmessagestosend/receive\n");}//Function:// Parsethecommandlineargumentsandsetsomeglobal dependingonthevoidValidateArgs(intargc,char**argv)//{ dwInterface=iPort=MCASTPORT;dwCount=for(i=1;i<argc;{if((argv[i][0]=='-')||(argv[i][0]=={switch{case's': //SenderbSender=TRUE;case'm': //Multicastgrouptojoinif(strlen(argv[i])>3)dwMulticastGroup=inet_addr(&argv[i][3]);case'i': //Localinterfacetouseif(strlen(argv[i])>3)dwInterface=inet_addr(&argv[i][3]);case'p': //Portnumbertouseif(strlen(argv[i])>3)iPort=atoi(&argv[i][3]);case'l': //Disableloopback?bLoopBack=TRUE;case'n': //Numberofmessagestosend/recvdwCount=atoi(&argv[i][3]);}}}}//Function:// Parsethecommandlinearguments,loadtheWinsock createasocketandjointhemulticastgroup.Ifthis isstartedasasenderthenbeginsendingmessagesto multicastgroup;otherwise,callrecvfrom()toread senttotheintmain(intargc,char{ structsockaddr_instructip_mreq len=sizeof(structsockaddr_in), //Parsethecommandlineandload//Winsock1.1if(WSAStartup(MAKEWORD(1,1),&wsd)!={return-1;}//Createthesocket.InWinsock1youdon'tneedany//flagstoindicateif((sockM=socket(AF_INET,SOCK_DGRAM,0))=={printf("socketfailedwith:%d\n",WSAGetLastError());return-}if(!bSender){local.sin_family=local.sin_port=if(bind(sockM,(structsockaddr*)&local,sizeof(local))==SOCKET_ERROR){printf("bindfailedwith:%d\n",WSAGetLastError());return-1;}}//Setuptheim_reqstructuretoindicatewhatgroupwe//tojoinaswellasthe =htons(iPort);//im_reqmcast.imr_interface.s_addr=dwInterface;(char*)&mcast,sizeof(mcast))==SOCKET_ERROR){printf("setsockopt(IP_ADD_MEMBERSHIP)failed:%d\n",return-}//SettheTTLtosomethingelse.ThedefaultTTLisliveTTL,//每当有路由器转发该报文时,TTL文//即使没有到达目的地,也立即宣布optval=(char*)&optval,sizeof(int))==SOCKET_ERROR){return-}//Disabletheloopbackifselected.NotethatonNT4and//youcannotdisableif{optval=(char*)&optval,sizeof(optval))==SOCKET_ERROR){return-}}if // //Receivesomefor(i=0;i<dwCount;{if((ret=recvfrom(sockM,recvbuf,BUFSIZE,(structsockaddr*)&from,&len))=={printf("recvfromfailedwith:%d\n",return-1;}recvbuf[ret]=printf("RECV:'%s'from<%s>\n",recvbuf,}} //{//Sendsomefor(i=0;i<dwCount;{sprintf(sendbuf,"server1:Thisisatest:%d",if(sendto(sockM,(char*)sendbuf,strlen(sendbuf),0,(structsockaddr*)&remote,sizeof(remote))=={printf("sendtofailedwith:return-}}}//Dropgroup(char*)&mcast,sizeof(mcast))==SOCKET_ERROR){printf("setsockopt(IP_DROP_MEMBERSHIP)failed:%d\n",}return0;}#include<winsock2.h>#include#pragma#include<stdio.h>#include<stdlib.h>#defineMCASTADDR #defineMCASTPORT #define BOOLbSender=FALSE, //Actasasender?bLoopBack= //DisableDWORDdwInterface, //绑定的本地接口 //连接的多播组 short //使用的端//Function:// Printusageinformationandvoidusage(char{printf("usage:%s-s-m:str-p:int-i:str-l-n:int\n",printf("-s Actasserver(senddata);otherwise\n"); receivedata.\n");printf("-m:str DotteddecimalmulticastIPaddres""tojoin\n"); Thedefaultgroupis:%s\n",MCASTADDR);printf("-p:int Portnumbertouse\n"); Thedefaultportis:%d\n",MCASTPORT);printf("-i:str Localinterfacetobindto;bydefault\n"); useINADDRY_ANY\n");printf("- Disableprintf("-n:int Numberofmessagestosend/receive\n");}voidValidateArgs(intargc,char**argv)//{ dwInterface=iPort=MCASTPORT;dwCount=for(i=1;i<argc{if((argv[i][0]=='-')||(argv[i][0]=={switch{case's'://SenderbSender=TRUE;case'm'://Multicastgrouptojoinif(strlen(argv[i])>3)dwMulticastGroup=inet_addr(&argv[i][3]);case'i'://Localinterfacetouseif(strlen(argv[i])>3)dwInterface=inet_addr(&argv[i][3]);case'p'://Porttouseif(strlen(argv[i])>iPort=atoi(&argv[i][3]);case'l'://DisableloopbackbLoopBack=TRUE;case'n'://Numberofmessagestosend/recvdwCount=atoi(&argv[i][3]);}}}}//Winsockintmain(intargc,char{ structsockaddr_in sock, len=sizeof(structsockaddr_in), Winsockif(WSAStartup(MAKEWORD(2,2),&wsd)!={return-1;}//Winsock2if((sock=WSASocket(AF_INET,SOCK_DGRAM,0,NULL,0,||WSA_FLAG_OVERLAPPED))=={printf("socketfailedwith:%d\n",WSAGetLastError());return-}local.sin_family=local.sin_port=if(bind(sock,(structsockaddr*)&local,sizeof(local))==SOCKET_ERROR){printf("bindfailedwith:%d\n",WSAGetLastError());return-1;}//SetuptheSOCKADDR_INstructuredescribingthe//groupwewantto =AF_INET; =//ChangetheTTLtosomethingmoreoptval=(char*)&optval,sizeof(int))==SOCKET_ERROR){return-1;}//Disableloopbackifif{optval=(char*)&optval,sizeof(optval))==SOCKET_ERROR){return-1;}}//Jointhemulticastgroup.NotethatsockMisnot//tosendorreceivedata.Itisusedwhenyouwant//leavethemulticastgroup.Yousimplycall//onif((sockM=WSAJoinLeaf(sock,(SOCKADDR*)&remote,sizeof(remote),NULL,NULL,NULL,NULL,JL_BOTH))=={pri
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026党史学校面试题目及答案
- 2026低氮环保面试题目及答案
- 2026反诈人员面试题及答案大全
- 2026关键决策面试题及答案
- 电子制造工艺与质量检测方案
- 2026国企情商面试题目及答案
- 2026洪山幼儿园面试题及答案
- 2026护士甲流面试题及答案
- 远离网络谣言共建清朗空间,小学主题班会课件
- 防范网络诈骗构建安全校园堡垒主题班会课件
- 青岛人防考试题库答案
- 2026海南省海洋与渔业科学院招聘事业编制人员4人(第1号)笔试参考试题及答案详解
- 2026年无菌操作技术考核试题及答案
- 2026年兰石化企业考核笔综合提升练习题及答案详解(考点梳理)
- 医疗器械经营质量管理制度和工作程序目录
- GB/T 44353.2-2024动物源医疗器械第2部分:来源、收集与处置的控制
- 船员培训总结
- GB/T 15622-2023液压缸试验方法
- 文言文曹冲称象课件
- 脱硫装置检修导则实施细则
- 附件:AA高速公路项目前期黒棉土处置惩罚方案二
评论
0/150
提交评论