繁体   English   中英

从未绑定的 UDP 套接字发送

[英]Sendto from unbinded UDP socket

情况:我需要从某个空闲端口使用UDP从客户端进行广播,然后从具有相同编号但TCP的端口上的服务器接受客户端上的tcp连接。 这就是为什么我需要在广播之前监听(并绑定)到这个端口。 端口不能是常量,因为我可以在一台机器上运行多个客户端。 所以这里有一些问题,可以帮助我更清楚地说明这种情况:

  1. 如果我从未绑定的 UDP 套接字进行发送,它是否绑定到任何空闲端口并且所有下一个发送消息都将从该端口发送,或者每次都会为新消息选择该端口?

  2. 我可以要求系统为我保留一些空闲端口吗? (我需要为 UDP 和 TCP 连接保留两个具有相同编号的端口)

  3. 我确定有一种已知的方法来处理这些情况,它是什么?

1)如果我从未绑定的UDP套接字发送sendto,它是否绑定到任何空闲端口并且所有下一个sendto消息都将从该端口发送

是的。

或者每次都会为新消息选择端口?

不。

2) 我可以要求系统为我预留一些空闲端口吗? (我需要为 UDP 和 TCP 连接保留两个具有相同编号的端口)

这就是自动绑定发生时发生的情况。 您可以通过绑定到端口号零来显式执行此操作,但这不是必需的。 它也不保证您可以将 UDP 和 TCP 绑定到相同的端口号。

3)我确定有一种已知的方法来处理这些情况,它是什么?

你已经找到了。 让自动绑定发生。

我在 stackoverflow 上找到了一些答案

  1. 您可以绑定到0端口,即指定它struct semaddr_in 这将允许您为您的连接类型获得一个未使用的端口。 它没有被定义为对其他类型的连接免费。

绑定到任何可用端口时查看@remy 的回答

  1. 是的,它们可以,因为标头是为 UDP 或 TCP 协议指定的。 所以机器可以分辨一个人。

请参阅TCP 和 UDP 套接字是否可以使用相同的端口?

  1. 如果您绑定到 0 端口,您将能够在调用sendto之前listen

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM