发送UDP消息时不需要绑定()。 原因:我们不需要显式绑定(),因为操作系统会自动将发件人与IP地址和端口号绑定。为什么在接收UDP消息时需要绑定?
为什么需要bind()来接收UDP消息? 发件人可以从接收到的上一条消息中获取IP地址&接收方的端口号,并使用该权限发送UDP消息?
发送UDP消息时不需要绑定()。 原因:我们不需要显式绑定(),因为操作系统会自动将发件人与IP地址和端口号绑定。为什么在接收UDP消息时需要绑定?
为什么需要bind()来接收UDP消息? 发件人可以从接收到的上一条消息中获取IP地址&接收方的端口号,并使用该权限发送UDP消息?
你的问题没有意义。如果您已经发送了消息,则不需要,因为您已经绑定了。如果您尚未发送消息,则需要使用该消息,在这种情况下,您描述的技术不可能适用。
UDP是无连接的,但它仍然基于绑定端口。接收者必须调用sendto()
,connect()
或bind()
建立本地绑定端口,以便操作系统知道哪个端口允许入站数据,并建立发送者需要发送数据的端口。如果接收方是发送数据包的第一方,那么绑定可以是隐含的,但如果接收方不是第一方,那么绑定必须明确完成。
如果接收方没有绑定本地端口,端口不会打开得更糟,或者最好由操作系统随机选择。无论如何,除非接收方通过外部方式告诉发送方,否则发送方无法知道将数据发送到哪个端口。即使这样,为了让接收者发现一个随机分配的端口,它将不得不查询套接字,但是无法查询未绑定的套接字。所以接收器必须以某种方式执行本地绑定。
在“上一个”消息之前交换会发生什么?在此之前?在此之前? ....你必须从某个地方开始,并且某人必须有一个明确的地址供另一方连接。 –