欢迎来到天天文库
浏览记录
ID:20411004
大小:185.86 KB
页数:7页
时间:2018-10-13
《linux课程设计报告-基于udp多播技术的群聊服务器及其客户端》由会员上传分享,免费在线阅读,更多相关内容在学术论文-天天文库。
1、软件1141《Linux操作系统》结业大作业题题目:基于UDP多播技术的群聊服务器及其客户端要求:1.运行在Linux系统平台上2.C语言編程3.基于TCP/IPsocket编程4.基于UDP多播技术5.每一个多播组成员针对多播组全体成员发送消息并接收来自每一个多播组成员的消息,至少要求三个多播组成员。6.(尽量)使用多线程技术7.当多个多播组成员同时发送消息时要避免冲突,保证信息的正确与不丢失。8.第12周五上午12点以前交(电子版发到指定邮箱)程序源码(加注释)及其运行结果截屏图。9.源码及其运行结果不得与人雷同。课程报告内容及格
2、式要求:2.1.程序源码及其简要注释;2.2.调试过程中出现的W题及相应解决办法;2.3.总体运行情况与结果分析讨论2.4上交结果:课程报告和程序源码。2.1.程序源码及其简要注释服务器的源代码如下:#include#include#include#include#include#include#include#include#include3、ead.h>#definePORT1234#defineMAXDATASIZE100#defineBUFLEN255intmain(intargc,char*argv[]){structARG*arg;structsockaddr_inpeeraddr;intsockfd,on=l;intnum,i;charmsg[BUFLEN+l];pthread_ttid;socklen_tlen;charbuf[MAXDATASIZE];/*要求运行时输入ip地址和端口号*/if(argc!=3)printf(Husage:%s4、ss〉5、r_in));peeraddr.sin_family=AF_INET;if(inet_pton(AF_INET,argv[1],&peeraddr.sin_addr)<=0){printf("WrongdestIPaddress");exit(O);}peeraddr.sin一port=htons(atoi(argv[2]));len=sizeof(peeraddr);/*服务器无限循环接收消息的代码*/while(l){num=recvfrom(sockfd,buf,MAXDATASIZE,Obstructsockaddr*)&6、peeraddr,&len);//服务器接收消息if(num<0){perror("recvfrom()error");exit(l);}buf[num]=’ ’;//设置字符串数组内容结束/*发送客户端传來的消息*/sendto(sockfd,buf,sizeof(buf),Obstructsockaddr*)&peeraddr,len);close(sockfd);}客户端的源代码如下:#include#include#include〈unistd.h〉#include7、s.h>#include#include#include#definePORT1234#defineMAXDATASIZE100#defineBUFLEN255intmain(intargc,char*argv[]){structsockaddr_inlocaladdr;intsockfd,n,num;charbuf[MAXDATASIZE],sendbuf[MAXDATASIZE];pid_tpid;charmsg[BUFL8、EN+l];/*运行客户端时输入端口号*/if(argc!=2){printf("usage:%s
3、ead.h>#definePORT1234#defineMAXDATASIZE100#defineBUFLEN255intmain(intargc,char*argv[]){structARG*arg;structsockaddr_inpeeraddr;intsockfd,on=l;intnum,i;charmsg[BUFLEN+l];pthread_ttid;socklen_tlen;charbuf[MAXDATASIZE];/*要求运行时输入ip地址和端口号*/if(argc!=3)printf(Husage:%s4、ss〉5、r_in));peeraddr.sin_family=AF_INET;if(inet_pton(AF_INET,argv[1],&peeraddr.sin_addr)<=0){printf("WrongdestIPaddress");exit(O);}peeraddr.sin一port=htons(atoi(argv[2]));len=sizeof(peeraddr);/*服务器无限循环接收消息的代码*/while(l){num=recvfrom(sockfd,buf,MAXDATASIZE,Obstructsockaddr*)&6、peeraddr,&len);//服务器接收消息if(num<0){perror("recvfrom()error");exit(l);}buf[num]=’ ’;//设置字符串数组内容结束/*发送客户端传來的消息*/sendto(sockfd,buf,sizeof(buf),Obstructsockaddr*)&peeraddr,len);close(sockfd);}客户端的源代码如下:#include#include#include〈unistd.h〉#include7、s.h>#include#include#include#definePORT1234#defineMAXDATASIZE100#defineBUFLEN255intmain(intargc,char*argv[]){structsockaddr_inlocaladdr;intsockfd,n,num;charbuf[MAXDATASIZE],sendbuf[MAXDATASIZE];pid_tpid;charmsg[BUFL8、EN+l];/*运行客户端时输入端口号*/if(argc!=2){printf("usage:%s
4、ss〉5、r_in));peeraddr.sin_family=AF_INET;if(inet_pton(AF_INET,argv[1],&peeraddr.sin_addr)<=0){printf("WrongdestIPaddress");exit(O);}peeraddr.sin一port=htons(atoi(argv[2]));len=sizeof(peeraddr);/*服务器无限循环接收消息的代码*/while(l){num=recvfrom(sockfd,buf,MAXDATASIZE,Obstructsockaddr*)&6、peeraddr,&len);//服务器接收消息if(num<0){perror("recvfrom()error");exit(l);}buf[num]=’ ’;//设置字符串数组内容结束/*发送客户端传來的消息*/sendto(sockfd,buf,sizeof(buf),Obstructsockaddr*)&peeraddr,len);close(sockfd);}客户端的源代码如下:#include#include#include〈unistd.h〉#include7、s.h>#include#include#include#definePORT1234#defineMAXDATASIZE100#defineBUFLEN255intmain(intargc,char*argv[]){structsockaddr_inlocaladdr;intsockfd,n,num;charbuf[MAXDATASIZE],sendbuf[MAXDATASIZE];pid_tpid;charmsg[BUFL8、EN+l];/*运行客户端时输入端口号*/if(argc!=2){printf("usage:%s
5、r_in));peeraddr.sin_family=AF_INET;if(inet_pton(AF_INET,argv[1],&peeraddr.sin_addr)<=0){printf("WrongdestIPaddress");exit(O);}peeraddr.sin一port=htons(atoi(argv[2]));len=sizeof(peeraddr);/*服务器无限循环接收消息的代码*/while(l){num=recvfrom(sockfd,buf,MAXDATASIZE,Obstructsockaddr*)&
6、peeraddr,&len);//服务器接收消息if(num<0){perror("recvfrom()error");exit(l);}buf[num]=’ ’;//设置字符串数组内容结束/*发送客户端传來的消息*/sendto(sockfd,buf,sizeof(buf),Obstructsockaddr*)&peeraddr,len);close(sockfd);}客户端的源代码如下:#include#include#include〈unistd.h〉#include7、s.h>#include#include#include#definePORT1234#defineMAXDATASIZE100#defineBUFLEN255intmain(intargc,char*argv[]){structsockaddr_inlocaladdr;intsockfd,n,num;charbuf[MAXDATASIZE],sendbuf[MAXDATASIZE];pid_tpid;charmsg[BUFL8、EN+l];/*运行客户端时输入端口号*/if(argc!=2){printf("usage:%s
7、s.h>#include#include#include#definePORT1234#defineMAXDATASIZE100#defineBUFLEN255intmain(intargc,char*argv[]){structsockaddr_inlocaladdr;intsockfd,n,num;charbuf[MAXDATASIZE],sendbuf[MAXDATASIZE];pid_tpid;charmsg[BUFL
8、EN+l];/*运行客户端时输入端口号*/if(argc!=2){printf("usage:%s
此文档下载收益归作者所有