0

是否有一种简单(非迭代)的方法来绑定两个套接字,一个 TCP 和一个 UDP,以保证两者具有相同的临时端口?

我有一个简单的服务器,最初通过 TCP 连接,但也通过 UDP 传输。我不想从客户端发送 UDP 数据包后连接只是为了让服务器发现客户端的 UDP 临时端口。除非必须,否则我不想通过初始 TCP 连接消息发送端口号。

现在,我在 TCP 套接字上的 getsockname 之后显式绑定客户端 UDP 套接字的端口,以发现操作系统分配的临时端口。它还没有失败,但感觉很脆弱。

编辑: 为了澄清,当前的实现假设操作系统永远不会为已经被 UDP 套接字使用的 TCP 套接字分配临时端口。

4

1 回答 1

0

将一个绑定到 (0),然后获取本地端口值,然后将另一个绑定到该值。如果失败(端口已经分配),关闭第一个套接字,冲洗并重复。

没有其他方法,它可能“感觉”很脆弱。但我不明白为什么你需要它们相同。如果它们是短暂的,那么无论如何其他人都不知道它们是什么,你必须以某种方式宣传它们。

于 2012-08-08T07:12:40.737 回答