我在UDP服务器/客户端应用程序上写。

我希望我的单个服务器一次处理40个客户端。为此,我想创建40个专用线程,每个专用于一个客户端。由于每个客户端有40个线程,因此我也想创建40个专用套接字。

但是问题在于:

我不知道我将socket()绑定(bind)到的40个IP地址是什么。 (从现在开始,我必须将bind()绑定(bind)到服务器的IP地址。)通常,当只有单个套接字时,我将bind()绑定(bind)到"INADDR_ANY"

但是,我应该将40个套接字中的每个socket()绑定(bind)到的IP地址是什么?
请帮我。任何意见/帮助表示赞赏。

最佳答案

使用UDP的一种常见方法是:

  • 服务器bind()到一个众所周知的端口。
  • 客户端将初始数据包发送到该知名端口
  • 服务器在众所周知的端口上从客户端接收第一个数据包。
  • 服务器使用随机端口
  • 创建一个新套接字
  • 服务器从此新套接字答复客户端。
  • 客户端收到回复,注意到它来自另一个端口而不是众所周知的端口
    服务器端口,并将该端口用作进一步通信的目标。

  • 您将使用getpeername()调用来学习远程地址。

    请记住,UDP是无连接的,您将需要某种方式来发出结束信号或套接字超时。

    关于c - 将40个套接字绑定(bind)到40个不同的IP地址,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/15969262/

    10-10 21:20