- 5
- 0
- 约7.23千字
- 约 11页
- 2021-01-16 发布于山东
- 举报
设计题目
基于 UDP 多播技术的群聊服务器及其客户端
开发环境
C 语言, Linux
设计要求
运行在 Linux 系统平台上
C 语言编程
基于 TCP/IP socket编程
基于 UDP 多播技术
每一个多播组成员针对多播组全体成员发送消息并接收来自每一个多播组成员的消
息
(尽量)使用多线程技术
当多个多播组成员同时发送消息时要避免冲突,保证信息的正确与不丢失。
流程图
客户端和服务器程序运行的流程图如下:
其中每个客户端都是如此同服务器端进行通讯的。
处理客
户数据
数据请求
数据应答
5 详细设计
。
关于 server 端的设计步骤如下:
1)初始化本地( server)的套接字地址结构 localaddr
memset(localaddr,0,sizeof(struct sockaddr_in));
localaddr.sin_family=AF_INET;
localaddr.sin_port=htons(atoi(argv[2]));
localaddr.sin_addr.s_addr = htonl(INADDR_ANY);
//设置端口重用
int opt = SO_REUSEADDR;
setsockopt(sockfd,SOL_SOCKET,SO_REUSEADDR,opt,sizeof(opt));
为套接字绑定本地地址协议
if(bind(sockfd,(struct sockaddr *)localaddr,sizeof(localaddr))==-1)
{
perror([Bind() error.]);
exit(1);
}
初始化组播的套接字地址结构
memset(peeraddr,0,sizeof(struct sockaddr_in));
peeraddr.sin_family=AF_INET;
if(inet_pton(AF_INET,argv[1],peeraddr.sin_addr)=0)
{
printf([Wrong multicast IP address]\n);
exit(0);
}
peeraddr.sin_port=htons(atoi(argv[2]));
(4)sever 端处理接收数据
while(1)
{ memset(msg,0,255); //printf(%s%d\t\t\t\t\t%d\n,msg,a++,(strlen(msg)-1));
if(read(sockfd,msg,255,0) = 0)
{
perror(read:);
exit(1);
}
if((strlen(msg)-1)0)
{printf([-fromClient-]%s\n,msg);
printf(|--------------------------------------------------------------------|\n);
if((num = sendto(sockfd,msg,3,0,(struct sockaddr *)peeraddr,sizeof(struct sockaddr_in))) == -1)
{
perror([child process-----sendto]\n);
exit(1);
}
}
}
}
关于 client 端的设计步骤如下:
(1)初始化本地的套接字地址结构
memset(localaddr,0,sizeof(struct sockaddr_in));
localaddr.sin_port=htons(atoi(argv[2]));
localaddr.sin_addr.s_addr=htonl(INADDR_ANY);
初始化加入组播的结构体
if(inet_pton(AF_INET,172.17.20.251,mcaddr.imr_interface)=0)// 此处输入本机 IP,为组播的结构体初始化本机 ip,以加入组播
{
perror([MCAddr Ip---failure]);
exit(0);
}
if(inet_pton(AF_INET,argv[1],mcaddr.imr_multiaddr)=0)
{
printf([Wrong multicast IP address]\n);
exit(0);
}
//printf(ip:%s\n,inet_ntoa(mcaddr.imr_multiaddr));
fflush(stdout);// 刷新输出缓冲区
加入多播组
if(setsockopt(sockfd,IPPROTO_IP,IP_ADD_MEMBERSHIP,mcaddr,sizeof(struct ip_mreq))0)
{
perror([setsockopt e
您可能关注的文档
最近下载
- 小学一年级数学算式——推荐.doc VIP
- 《新时代汉语口语:初级·上》PPT第15课 你们国家怎么庆祝新年?.pptx VIP
- 电子商务法律法规课程标准完整版.pdf VIP
- 第11课近代职业教育的兴起和发展(新教材课件)(共17张PPT)-【中职专用】《世界历史》同步精品课堂(高教版2025?基础模块).pptx VIP
- 北师大版高中数学必修第二册全册教学课件.ppt
- 中国药科大学《物理化学》物理化学主要公式及使用条件.doc VIP
- 基于语义距离学习的迁移学习可解释性判别机制研究.pdf VIP
- 2025年特许金融分析师自由现金流估值中的市场增加值分析专题试卷及解析.pdf VIP
- 2025年项目管理专业系统集成项目管理工程师成本绩效指数与配置管理整合专题试卷及解析.pdf VIP
- 广东省六校(广州二中,深圳实验,珠海一中,中山纪念,东莞中学2025届高三第四次模拟考试英语试卷含解析.doc VIP
原创力文档

文档评论(0)