版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
课程网络协议编 实验名称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中国自动驾驶高精地图采集标准与商业运营模式创新报告
- 七年级生物下册 13.4《当代主要疾病和预防》教案 北师大版
- 瓷砖检测相关考试题及参考答案
- 2026年公司中秋、国庆安全应急预案
- 成人高尿酸血症与痛风食养指南(2024年版)
- 2026年秋新教材北师大版初中数学七年级第一学期教学计划及进度表
- 2026年8月昆明市第二人民医院融城老年病医院招聘合同制工作人员及见习人员7人考试参考题库及答案详解
- 北师大版二年级数学上册教材分析
- 2026年四川省凉山州中考数学真题试卷(含解析)
- 2026年物业管理师(物业管理综合能力)真题试卷(含答案)
- 2026苏教版五年级数学上册第一单元第2课《图形的旋转》课件
- 2026年山东省泰安市中考生物试卷附答案
- 2026年招聘医生心理测试题及答案
- 2026届小升初数学分班考试模拟试卷(含答案详解与评分标准)
评论
0/150
提交评论