基于udp多播聊天室

基于udp多播聊天室

ID:11758747

大小:294.50 KB

页数:11页

时间:2018-07-13

基于udp多播聊天室_第1页
基于udp多播聊天室_第2页
基于udp多播聊天室_第3页
基于udp多播聊天室_第4页
基于udp多播聊天室_第5页
资源描述:

《基于udp多播聊天室》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、1设计题目基于UDP多播技术的群聊服务器及其客户端2开发环境C语言,Linux3设计要求1.运行在Linux系统平台上2.C语言编程3.基于TCP/IPsocket编程4.基于UDP多播技术5.每一个多播组成员针对多播组全体成员发送消息并接收来自每一个多播组成员的消息6.(尽量)使用多线程技术7.当多个多播组成员同时发送消息时要避免冲突,保证信息的正确与不丢失。4流程图客户端和服务器程序运行的流程图如下:其中每个客户端都是如此同服务器端进行通讯的。户数据处理客到客户数据阻塞直到接收数据应答数据请求5详细设计1.。2.关于server端的设计步骤如下:(1)初始化本地(server)的套接字

2、地址结构localaddrmemset(&localaddr,0,sizeof(structsockaddr_in));localaddr.sin_family=AF_INET;localaddr.sin_port=htons(atoi(argv[2]));localaddr.sin_addr.s_addr=htonl(INADDR_ANY);//设置端口重用intopt=SO_REUSEADDR;setsockopt(sockfd,SOL_SOCKET,SO_REUSEADDR,&opt,sizeof(opt));(2)为套接字绑定本地地址协议if(bind(sockfd,(struct

3、sockaddr*)&localaddr,sizeof(localaddr))==-1){perror("[Bind()error.]");exit(1);}(3)初始化组播的套接字地址结构memset(&peeraddr,0,sizeof(structsockaddr_in));peeraddr.sin_family=AF_INET;if(inet_pton(AF_INET,argv[1],&peeraddr.sin_addr)<=0){printf("[WrongmulticastIPaddress]");exit(0);}peeraddr.sin_port=htons(atoi(

4、argv[2]));(4)sever端处理接收数据while(1){memset(msg,0,255);//printf("%s%dttttt%d",msg,a++,(strlen(msg)-1));if(read(sockfd,msg,255,0)<=0){perror("read:");exit(1);}if((strlen(msg)-1)>0){printf("[-fromClient-]%s",msg);printf("

5、--------------------------------------------------------------------

6、"

7、);if((num=sendto(sockfd,msg,3,0,(structsockaddr*)&peeraddr,sizeof(structsockaddr_in)))==-1){perror("[childprocess-----sendto]");exit(1);}}}}1.关于client端的设计步骤如下:(1)初始化本地的套接字地址结构memset(&localaddr,0,sizeof(structsockaddr_in));localaddr.sin_port=htons(atoi(argv[2]));localaddr.sin_addr.s_addr=htonl(IN

8、ADDR_ANY);(2)初始化加入组播的结构体if(inet_pton(AF_INET,"172.17.20.251",&mcaddr.imr_interface)<=0)//此处输入本机IP,为组播的结构体初始化本机ip,以加入组播{perror("[MCAddrIp---failure]");exit(0);}if(inet_pton(AF_INET,argv[1],&mcaddr.imr_multiaddr)<=0){printf("[WrongmulticastIPaddress]");exit(0);}//printf("ip:%s",inet_ntoa(mcaddr.

9、imr_multiaddr));fflush(stdout);//刷新输出缓冲区(3)加入多播组if(setsockopt(sockfd,IPPROTO_IP,IP_ADD_MEMBERSHIP,&mcaddr,sizeof(structip_mreq))<0){perror("[setsockopterror---joinmulticastfailed]");exit(4);}//设置端口重用intopt=SO_R

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。