免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 2260 | 回复: 4
打印 上一主题 下一主题

请教,组播测试失败 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2008-10-18 21:17 |只看该作者 |倒序浏览
两台设备PC都是fedora8.用下面这两段服务器,客户端组播代码。服务器发送数据,客户无法接收数据。请问是怎么回事?
服务端:
  1 #include <stdio.h>
  2 #include <string.h>
  3 #include <sys/socket.h>
  4 #include <arpa/inet.h>
  5 #include <netinet/in.h>
  6 #define MAXBUF 256
  7 #define PUERTO 5000
  8 #define GRUPO "224.0.1.1"
  9
10 int main()
11 {
12         int s;
13         struct sockaddr_in srv;
14         char buf[MAXBUF];
15         bzero(&srv, sizeof(srv));
16         srv.sin_family = AF_INET;
17         srv.sin_port = htons(PUERTO);
18         if (inet_aton(GRUPO, &srv.sin_addr) < 0)
19         {
20                 perror("inet_aton");
21                 return 1;
22         }
23         if ((s = socket(AF_INET, SOCK_DGRAM, 0)) < 0)
24         {
25                 perror("socket");
26                 return 1;
27         }
28         while (fgets(buf, MAXBUF, stdin))
29         {
30                 if (sendto(s, buf, strlen(buf), 0, (struct sockaddr *)&srv, sizeof(srv)) < 0)
31                 {
32                         perror("recvfrom");
33                 }
34                 else
35                 {
36                         fprintf(stdout, "Enviado a %s: %s", GRUPO, buf);
37                 }
38         }
39 }

客户端:
  1 #include <stdio.h>
  2 #include <string.h>
  3 #include <sys/socket.h>
  4 #include <arpa/inet.h>
  5 #include <netinet/in.h>
  6 #define MAXBUF 256
  7 #define PUERTO 5000
  8 #define GRUPO "224.0.1.1"
  9
10 int main()
11 {
12         int s, n, r;
13         struct sockaddr_in srv, cli;
14         struct ip_mreq mreq;
15         char buf[MAXBUF];
16         bzero(&srv, sizeof(srv));
17         srv.sin_family = AF_INET;
18         srv.sin_port = htons(PUERTO);
19         if (inet_aton(GRUPO, &srv.sin_addr) < 0)
20         {
21                 perror("inet_aton");
22                 return 1;
23         }
24         if ((s = socket(AF_INET, SOCK_DGRAM, 0)) < 0)
25         {
26                 perror("socket");
27                 return 1;
28         }
29         if (bind(s, (struct sockaddr *)&srv, sizeof(srv)) < 0)
30         {
31                 perror("bind");
32                 return 1;
33         }
34         if (inet_aton(GRUPO, &mreq.imr_multiaddr) < 0)
35         {
36                 perror("inet_aton");
37                 return 1;
38         }
39         mreq.imr_interface.s_addr = htonl(INADDR_ANY);
40         if (setsockopt(s, IPPROTO_IP, IP_ADD_MEMBERSHIP, &mreq, sizeof(mreq)) < 0)
41         {
42                 perror("setsockopt");
43                 return 1;
44         }
45         n = sizeof(cli);
46         while (1)
47         {
48                 if ((r = recvfrom(s, buf, MAXBUF, 0, (struct sockaddr *)&cli, &n)) < 0)
49                 {
50                         perror("recvfrom");
51                 }
52                 else
53                 {
54                         buf[r] = '\0';
55                         fprintf(stdout, "Mensaje desde %s: %s", inet_ntoa(cli.sin_addr), buf);
56                 }
57         }
58 }
                                                                                                                             36,1-8       顶端

~

论坛徽章:
0
2 [报告]
发表于 2008-10-18 21:21 |只看该作者
新申请的帐号,没有积分,见谅……

论坛徽章:
0
3 [报告]
发表于 2008-10-19 13:19 |只看该作者
怎么没人回答呢?没人懂吗?

论坛徽章:
95
程序设计版块每日发帖之星
日期:2015-09-05 06:20:00程序设计版块每日发帖之星
日期:2015-09-17 06:20:00程序设计版块每日发帖之星
日期:2015-09-18 06:20:002015亚冠之阿尔艾因
日期:2015-09-18 10:35:08月度论坛发贴之星
日期:2015-09-30 22:25:002015亚冠之阿尔沙巴布
日期:2015-10-03 08:57:39程序设计版块每日发帖之星
日期:2015-10-05 06:20:00每日论坛发贴之星
日期:2015-10-05 06:20:002015年亚冠纪念徽章
日期:2015-10-06 10:06:482015亚冠之塔什干棉农
日期:2015-10-19 19:43:35程序设计版块每日发帖之星
日期:2015-10-21 06:20:00每日论坛发贴之星
日期:2015-09-14 06:20:00
4 [报告]
发表于 2008-10-19 20:53 |只看该作者
原帖由 phz1985 于 2008-10-19 13:19 发表
怎么没人回答呢?没人懂吗?

估计周末大家都休息去了

论坛徽章:
0
5 [报告]
发表于 2008-10-20 14:58 |只看该作者
centos 5测试通过。代码上看没什么问题。
可以抓一下包,看一下路由器和防火墙的设置。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP