如何在发送UDP的时候指定自己的IP地址为0.0.0.0

sherlock_lai 2009-04-15 09:09:20
我通过 socket(AF_INET,DGRAM,0),然后bind,不行,发出去的UDP包还是自己的实际IP。
如果通过ifconfig eth0 0.0.0.0 再发包,就出现 RPC: sendmsg returned error 101 的错误。
...全文
813 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复
..楼主,不用RAW,肯定不能自己填充包头的.
morris88 2009-04-15
  • 打赏
  • 举报
回复
tcp/ip 不允许发送的报文中填充的本地 ip 地址为 广播地址,远端收到后没法回应...
sherlock_lai 2009-04-15
  • 打赏
  • 举报
回复
是的,但是raw socket的话就应该要自己构造IP头以及计算校验和了,有没有简单的方法?
morris88 2009-04-15
  • 打赏
  • 举报
回复
先采用 raw socket,然后 send...
貌似必须 root 用户才行...
sherlock_lai 2009-04-15
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 southflow 的回复:]
需要建立原始IP socket,在原始的socket上发送数据包构造自己的IP头部。一般情况下是内核构造的,不过也可以构造自己IP头。可以设置IP_HDRINCL socket选项。
[/Quote]
我设置了IP_HDRINCL,但是只能设置IP头中的目标IP地址,自己的IP地址还是内核自动填充,设了也没用
子晞 2009-04-15
  • 打赏
  • 举报
回复
需要建立原始IP socket,在原始的socket上发送数据包构造自己的IP头部。一般情况下是内核构造的,不过也可以构造自己IP头。可以设置IP_HDRINCL socket选项。

23,121

社区成员

发帖
与我相关
我的任务
社区描述
Linux/Unix社区 应用程序开发区
社区管理员
  • 应用程序开发区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧