免费注册 查看新帖 |

Chinaunix

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

请教各位大侠,socket编程Bind出错,谢谢诸位大侠了 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2007-05-12 17:21 |只看该作者 |倒序浏览
if((sockfd=(socket(PF_PACKET, SOCK_RAW, htons(ETH_P_ALL))))==-1)
{
printf("create socket error";
perror("socket";
exit(1);
}
//初始化结构体,并绑定2323端口
addr.sin_family = AF_PACKET;
addr.sin_port = htons(2323);
addr.sin_addr.s_addr = INADDR_ANY;
bzero(&(addr.sin_zero),;
//绑定套接口
if(bind(sockfd,(struct sockaddr *)&addr,sizeof(struct sockaddr))==-1)
{
perror("bind socket error";
exit(1);
}

请教各位大侠,为什么bind会出错呢??谢谢了

论坛徽章:
0
2 [报告]
发表于 2007-05-12 17:26 |只看该作者

回复 #1 fire114 的帖子

bzero()
为什么要放在这儿呢?

论坛徽章:
0
3 [报告]
发表于 2007-05-12 17:35 |只看该作者

谢谢圣骑士的回复,我做了修改,还是不行。

我先删除了bzero,不行,
然后又把bzero放到addr.sin_family = AF_PACKET;之前,还是不行。。。。请大侠指点,谢谢

论坛徽章:
0
4 [报告]
发表于 2007-05-12 17:37 |只看该作者

回复 #2 scutan 的帖子

谢谢圣骑士的回复,我做了修改,还是不行。


我先删除了bzero,不行,
然后又把bzero放到addr.sin_family = AF_PACKET;之前,还是不行。。。。请大侠指点,谢谢

论坛徽章:
0
5 [报告]
发表于 2007-05-12 18:56 |只看该作者

回复 #1 fire114 的帖子

socket()里面的是PF_PACKET,而下面的是AF_PACKET, 应该有误.

论坛徽章:
0
6 [报告]
发表于 2007-05-12 19:29 |只看该作者
你应该用的是这个结构
struct sockaddr_ll
{
        unsigned short        sll_family;
        unsigned short        sll_protocol;
        int                sll_ifindex;
        unsigned short        sll_hatype;
        unsigned char        sll_pkttype;
        unsigned char        sll_halen;
        unsigned char        sll_addr[8];
};

论坛徽章:
0
7 [报告]
发表于 2007-05-13 14:41 |只看该作者
同意楼上的看法,你addr的类型是不是定义的是struct sockaddr_in addr;本人也是出学者,希望大家一起学习。

论坛徽章:
0
8 [报告]
发表于 2007-05-17 09:33 |只看该作者
请问

  1. sockfd=(socket(PF_PACKET, SOCK_RAW, htons(ETH_P_ALL))...
复制代码

创建的socket还需要bind吗?
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP