LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 1734|回复: 3

如何指定UDP包的源地址和源端口?

[复制链接]
发表于 2008-5-19 15:17:29 | 显示全部楼层 |阅读模式
目前的需求:
比如已知一个IP:127.0.0.1, 端口号:1800.在不使用bind函数的情况下,当发送UDP包的时候,如何能让包中的源地址等于127.0.0,端口等于1800.

我查了很多setsockopt可以用的选项,好像没有找到合适的。


哪位达人愿意告知,多谢!
发表于 2008-5-20 08:47:27 | 显示全部楼层
不敢肯定有没有什么其它简单的办法。但 bind 函数的确是设计来实现这个目的的,不明白为何要有不使用 bind 的前提。
回复 支持 反对

使用道具 举报

发表于 2008-5-22 09:15:18 | 显示全部楼层
Post by jeff_yecn;1852142
不敢肯定有没有什么其它简单的办法。但 bind 函数的确是设计来实现这个目的的,不明白为何要有不使用 bind 的前提。

有这个规定么?bind和connect都可以用在UDP上的
回复 支持 反对

使用道具 举报

 楼主| 发表于 2008-5-22 13:24:28 | 显示全部楼层
Post by Arthur.Echo;1853183
有这个规定么?bind和connect都可以用在UDP上的


bind的确可以用。但现在我遇到的问题是,一个Server是有多个IP地址的,已经有一个socket绑定在18000端口了,并且IP是ANY_ADDR,这个是用来收数据的。
现在如是再对特定(127.0.0.1)进行 bind的时候后,所以数据到来的通知只传到新bind的socket上了,,那个专门用来收数据的 socket并没有收到数据,,造成了丢包。

不过我现在已经解决了这个问题, 初始化的时候先获得系统所以的IP,然后分别bind到1800端口。

多谢各位的帮助!
回复 支持 反对

使用道具 举报

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

本版积分规则

快速回复 返回顶部 返回列表