0

我正在编写一个简单的发送方和接收方程序以使用 UDP 进行传输,因此它是无连接的,但我无法确定我的接收方程序是否需要调用 bind() 或服务器和/或两者。我的接收程序(客户端)将处于无限循环中,等待从发送方(服务器)接收数据,然后打印出数据。除了将地址/端口与特定套接字相关联之外,我不太确定 bind() 究竟做了什么。为什么我需要调用 bind()?

4

3 回答 3

1

您需要调用bind(2),以便操作系统知道将网络数据包路由到哪个应用程序。当您bind使用给定协议(例如 TCP 或 UDP)的特定端口调用时,您会问它“每当您在端口 XXXXX 上看到网络数据包时,请给我”。

例如,假设您的程序的两个副本正在运行,它们都想在同一个端口上侦听 UDP 数据包。如果他们都bind在同一个端口上调用,那么一个会成功,一个会失败,因为操作系统可以仲裁谁绑定到每个端口。然后,在该端口上接收到的任何数据包都将被提供给成功绑定到该端口的程序实例。

于 2012-04-09T05:03:50.713 回答
0

当你想让一个套接字成为一个固定的地址或/和端口时,你可以使用 bind。

于 2012-04-09T05:36:55.503 回答
0

在开发网络应用程序时见,您需要指定“地址和端口”来绑定,因为如果您想为 Localhost 设置它,您的应用程序无法与整个网络进行通信,它仅适用于您正在通信的系统。如果你用你的网络地址设置它不能作为 localhost 通信它只能与网络通信,如果你将它设置为 0,那么它可以用作 localhost 和网络。

于 2012-04-09T06:46:18.610 回答