假设我们有一个带有 socket sa 和 new_socket 的服务器程序。我正在使用的教程采用 socket sa 和 new_socket,以及名为 server
和 client
的两个 sockaddr_in
结构;然后将套接字绑定(bind)到 IP 地址:端口,然后调用 listen()
函数。当listen
返回时,程序调用
new_socket = accept(sa, (struct sockaddr*)&client, &length);
我的问题是,假设有 3 个人正在连接...
我是否需要为每个 accept
函数提供 3 个不同的结构和 3 个不同的 new_sockets,比如说我是否希望我的服务器为连接到它的 3 个不同的客户端提供服务?
此外,为什么我们需要一个用于accept
的new_socket?为什么有两个不同的套接字 1 用于 bind
和 1 用于 accept
?套接字操作不应该在 bind
ed 上执行吗?
我正在尝试为套接字实现一个类,以使其对我来说更容易,并且作为练习我的 oop 技能的好方法....
最佳答案
服务器通常需要一个 socket 。您可以在该套接字中设置服务器正在监听的端口,并调用 accept()
以等待传入连接。
此外,每个客户端连接都需要一个套接字。这是一个由 accept()
返回的新套接字。这是必要的,因为服务器可以处理多个客户端。如果你对所有事情都使用一个套接字,就没有办法告诉你哪个客户端正在向你发送消息,或者指示向哪个客户端发送回复。
关于c++ - 每个连接需要多少套接字?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15713582/