如何使用c ++将多个TCP IP客户端连接到同一服务器端口

时间:2013-08-13 09:47:58

标签: c++ tcpclient

我想使用TCP IP将2个客户端连接到同一服务器端口。我在绑定之前使用下面的代码: - //重用已绑定的套接字

int reuse=1; 
    setsockopt(m_iSocketId, SOL_SOCKET, SO_REUSEADDR, (char *)&reuse, sizeof(reuse))

2 个答案:

答案 0 :(得分:2)

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);

在此代码之后,您将有两个客户端套接字可供使用。请注意,在某些客户端连接之前,“接受”功能会阻塞。通常,您应该使用一些异步方法(例如select)来处理多个客户端。

SO_REUSEADDR通常不适合您的用途。它只是告诉系统监听端口可以被服务器的多个实例重用。当您的应用程序在退出时未正确关闭套接字时,它适用于调试。否则系统可能会保留端口一段时间,拒绝将另一个套接字绑定到它。

不要忘记listen和accept calls上的错误处理=)

答案 1 :(得分:0)

您不需要为此设置SO_REUSEADDR。你不需要做任何特别的事情。只需根据需要在客户端中创建和连接任意数量的套接字,并继续在服务器中调用accept()

相关问题