我想使用 TCP IP 将 2 个客户端连接到同一个服务器端口。我在绑定之前使用了下面的代码:-//重用已经绑定的套接字
int reuse=1;
setsockopt(m_iSocketId, SOL_SOCKET, SO_REUSEADDR, (char *)&reuse, sizeof(reuse))
listen(iSocketId, 2);
struct sockaddr clientAddr;
socklen_t length = sizeof(clientAddr);
int firstClientSocket = accept(iSocketId, &clientAddr, &length);
length = sizeof(clientAddr);
int secondClientSocket = accept(iSocketId, &clientAddr, &length);
在此代码之后,您将有两个客户端套接字可供使用。但是请注意,在某些客户端连接之前,“接受”功能会阻塞。一般来说,您应该使用一些 aync 方法(例如 select)来处理多个客户端。
SO_REUSEADDR 通常不适合您的目的。它只是告诉系统侦听端口可以被服务器的多个实例重用。当您的应用程序在退出时未正确关闭套接字时,这对调试很有用。否则系统可能会保留该端口一段时间,拒绝将另一个套接字绑定到它。
并且不要忘记侦听和接受呼叫时的错误处理 =)
您无需为此进行设置SO_REUSEADDR
。你不需要做任何特别的事情。只需根据需要在客户端创建并连接尽可能多的套接字,然后继续accept()
在服务器中调用。