Tcp 同一个客户端是否可以与服务器建立多个连接?

Tcp 同一个客户端是否可以与服务器建立多个连接?,tcp,Tcp,我正在开发一个客户机-服务器应用程序。 当我多次运行同一个客户机时,服务器只从一个客户机接收数据,并阻止来自另一个客户机的数据。 这里我的问题是,从一个客户端在同一端口上进行多个连接是否有效?是的,您可以。这完全取决于服务器端代码的编写方式。您可以在通过accept()接受客户机连接之后,用fork()创建一个单独的进程,或者保存accept()返回的所有套接字描述符,并通过select()处理所有套接字描述符 因此,是的,从同一客户机到同一端口建立多个连接是有效的。客户端将使用不同的源端口,因

我正在开发一个客户机-服务器应用程序。 当我多次运行同一个客户机时,服务器只从一个客户机接收数据,并阻止来自另一个客户机的数据。
这里我的问题是,从一个客户端在同一端口上进行多个连接是否有效?

是的,您可以。这完全取决于服务器端代码的编写方式。您可以在通过accept()接受客户机连接之后,用fork()创建一个单独的进程,或者保存accept()返回的所有套接字描述符,并通过select()处理所有套接字描述符


因此,是的,从同一客户机到同一端口建立多个连接是有效的。客户端将使用不同的源端口,因此4元组(src_ip、src_port、dst_ip、dst_port)保持唯一。

每次接受客户端后,我将创建一个新线程。如果我在同一台机器上运行多个客户端,服务器会为每个客户端创建线程。但服务器只从最新创建的客户端接收数据。如果同时发送,则不会从其他客户端接收数据。我发现所有客户端共享相同的套接字编号。这是预期的行为吗?不,每次从accept()返回时都会给您一个新的套接字文件描述符。accept在服务器端调用,服务器得到不同的套接字,但所有客户端都得到相同的套接字编号。我想这不是预期的行为。