免费注册 查看新帖 |

Chinaunix

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

[网络] sendto error:Address family not supported by protocol [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2012-12-28 10:54 |只看该作者 |倒序浏览
   程序代码如下所示:
  1. #include <sys/types.h>
  2. #include <sys/socket.h>
  3. #include <arpa/inet.h>
  4. #include <stdio.h>
  5. #include <stdlib.h>
  6. #include <netdb.h>
  7. #include <errno.h>
  8. #include <strings.h>
  9. #include <string.h>

  10. #define MCAST_PORT 8888
  11. #define MCAST_ADDR "224.0.0.88"

  12. int main(int argc, char **argv)
  13. {
  14.         struct sockaddr_in mcast_addr, client_addr;
  15.         struct sockaddr_in temp_addr;
  16.         int sockfd;
  17.        
  18.         sockfd = socket(AF_INET, SOCK_DGRAM, 0);
  19.         if(sockfd == -1)
  20.         {
  21.                 fprintf(stderr, "socket() error.\n");
  22.                 exit(EXIT_FAILURE);
  23.         }
  24.        
  25.         //初始化多播地址
  26.         bzero(&mcast_addr, sizeof(mcast_addr));
  27.         mcast_addr.sin_family = AF_INET;
  28.         mcast_addr.sin_family = htons(MCAST_PORT);
  29.         mcast_addr.sin_addr.s_addr = inet_addr(MCAST_ADDR);

  30.         char send_buf[1024] = {0};       
  31.         int i = 1;
  32.         while(1)
  33.         {
  34.                 memset(send_buf, 0, sizeof(send_buf));
  35.                 sprintf(send_buf, "%d", i);
  36.                 int send_num = sendto(sockfd, send_buf,        sizeof(send_buf), 0, (struct sockaddr *)&mcast_addr, sizeof(mcast_addr));
  37.                 if(send_num < 0)
  38.                 {
  39.                         fprintf(stderr, "sendto() error.\n");
  40.                         printf("the error is: %d, 具体内容为:%s\n", errno, strerror(errno));
  41.                         exit(EXIT_FAILURE);
  42.                 }
  43.                 else
  44.                 {
  45.                         printf("send message: %s\n", send_buf);
  46.                 }
  47.                 sleep(1);
  48.                
  49.                 i++;
  50.                 memset(send_buf, 0, sizeof(send_buf));
  51.                
  52.                 int temp_len = sizeof(struct sockaddr);
  53.                 send_num = recvfrom(sockfd, send_buf, 1024, 0, (struct sockaddr *)&temp_addr, &temp_len);
  54.                 printf("receive message: %s\n", send_buf);
  55.         }

  56.         close(sockfd);
  57.         return 0;
  58. }
复制代码
错误如下:


  上网查找资料,没有解决问题,因此来请教。。

论坛徽章:
0
2 [报告]
发表于 2012-12-28 11:06 |只看该作者
版主,拯救一下小弟。。。

论坛徽章:
4
水瓶座
日期:2013-09-06 12:27:30摩羯座
日期:2013-09-28 14:07:46处女座
日期:2013-10-24 14:25:01酉鸡
日期:2014-04-07 11:54:15
3 [报告]
发表于 2012-12-28 12:39 |只看该作者
      mcast_addr.sin_family = AF_INET;
        mcast_addr.sin_family = htons(MCAST_PORT);

论坛徽章:
0
4 [报告]
发表于 2012-12-28 14:36 |只看该作者
回复 3# linux_c_py_php

  非常感谢,这种错误,哎,以后要仔细。



   
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP