免费注册 查看新帖 |

Chinaunix

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

网络(bind) [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2005-11-23 14:24 |只看该作者 |倒序浏览
struct sockaddr_in my_addr;
    struct sockaddr_in their_addr;
   

      memset(&my_addr, 0, sizeof(my_addr));

     /*create a socket*/
    if(sockfd = socket(PF_INET,SOCK_DGRAM,0)==-1)           
    {
               perror("socket create error");
    }                 
      
    /*init my_addr*/
    my_addr.sin_family = PF_INET;
        my_addr.sin_port = htons(5001);
    my_addr.sin_addr.s_addr = htonl(INADDR_ANY);

    /*bind address and port to socket*/
    if(bind(sockfd,(struct sockaddr *) &my_addr,sizeof(struct sockaddr)) == -1)
    {
       perror("bind error");
       exit(-1);
    }
    close (sockfd);

**************************************
出现以下错误
livextv:/usr/share/log/socket/sock# ./a.out
bind error: Socket operation on non-socket
***************************************

请问什么原因???

论坛徽章:
0
2 [报告]
发表于 2005-11-23 14:45 |只看该作者
if(sockfd = socket(PF_INET,SOCK_DGRAM,0)==-1)

是不是这里把括号写错了,导致 sockfd 是个错误的值?

论坛徽章:
0
3 [报告]
发表于 2005-11-23 17:00 |只看该作者

少了个括号?

if((sockfd = socket(PF_INET,SOCK_DGRAM,0))==-1)   
是不是应该这样?
否则,先执行==,sockfd=0

论坛徽章:
0
4 [报告]
发表于 2005-11-23 17:04 |只看该作者
原帖由 slowly13008 于 2005-11-23 17:00 发表
if((sockfd = socket(PF_INET,SOCK_DGRAM,0))==-1)   

应该是对的

论坛徽章:
0
5 [报告]
发表于 2005-11-24 15:33 |只看该作者

怎么写程序都不习惯printf errno呢?

打印出errno一般都能查得到相关信息啊
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP