在 C++ 中使客户端响应传入的连接请求

Making a client respond to incoming connection requests in C++

我正在用 C++ 构建一个虚拟的 P2P 应用程序并且有一个概念上的疑问。 (我完全是网络初学者。)

我的客户端 A 创建了一个套接字并连接到服务器。另一个客户端 B 来向服务器询问客户端 A 的 IP 和端口。客户端 B 现在想直接与 A 建立连接。我在客户端 A 中创建了另一个线程,它想要监听传入的连接请求。 请通过这几点验证我的理解。

  1. 我在客户端A中创建用于与服务器连接的套接字后的文件描述符只能由服务器使用read/write。

  2. 客户端 B 发送给 A 的连接请求将在其他队列中结束,需要单独处理,并且对客户端 A 已有的连接不可见。基本上这意味着进入文件描述符的内容会通过关联的端口,但进入端口的内容可能不会进入文件描述符。只来自正确的来源。

  3. Client A 需要创建一个新的套接字绑定到与前一个套接字相同的端口和地址来处理传入的请求。

最佳,

TCP 是一种点对点连接,它只能用于从您的应用程序到另一个应用程序的单一连接。如果你想接受传入的连接,你需要第二个套接字(被动的,监听的),它被用作其他应用程序的连接点。当另一个应用程序连接到此(被动,侦听)套接字时,您将获得一个 third 套接字用于实际连接。

所以:

  1. 是。

  2. 是。

  3. 没有。您从 A 到服务器的连接可以使用任意端口。 A 中的(被动,侦听)套接字需要绑定到应用程序 B 连接到的 "well-known" 端口。