首页 文章

创建两个套接字,一个TCP和一个UDP时,保证临时端口是相同的

提问于
浏览
0

是否有一种简单的(非迭代)方法来绑定两个套接字,一个TCP和一个UDP,以确保它们具有相同的短暂端口?

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

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

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

1 回答

  • 0

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

    没有别的方法,因为它可能“感觉”而脆弱 . 但我不明白为什么你需要他们是一样的 . 如果他们是短暂的,没有人知道他们是什么,你必须以某种方式做广告 .

相关问题