linux下的原始套接字使用

在linux下的网络编程:
1)我希望创建一个包发送给局域网内的所有主机。
2)这个包是否需要符合某些协议的包的结构?还是任意的结构,例如:“123”,int这种类型的。
3)使用什么数据类型的网络地址?sockaddr_in,还是sockaddr_ll?
测试后发现,使用socket(PF_PACKET,SOCK_RAW,htons(ETH_P_ALL))能创建套接字,但是使用sendto后,一直返回的是-1.这是什么原因?这里使用的网络地址类型是sockaddr_ll,sockaddr_11.sll_addr = INANY_BROADCAST.

评论 (0)链接2012-11-01 

1、肯定要符合协议包的数据结构,否则会被丢弃的
2、具体参考http://blog.chinaunix.net/uid-23069658-id-3280895.html

该答案已被锁定,无法对其进行评论,编辑及投票。
()
评论 (0)链接 • 2012-11-01
德问是一个专业的编程问答社区,请 登录注册 后再提交答案