每个连接需要多少个套接字?

时间:2013-03-30 00:40:30

标签: c++ c winsock winsock2

假设我们有一个带有套接字sa和new_socket的服务器程序。我正在使用的教程使用socket sa和new_socket,以及两个名为sockaddr_inserver的{​​{1}}结构;然后将套接字绑定到IP地址:port,然后调用client函数。当listen()返回时,程序调用

listen

我的问题是,让我们说连接有3个人...... 我是否需要为每个new_socket = accept(sa, (struct sockaddr*)&client, &length); 函数设置3个不同的结构和3个不同的new_sockets,比如我是否希望我的服务器为连接它的3个不同客户端提供服务?

另外,为什么我们需要accept的new_socket?为什么accept有两个不同的套接字1,bind有1个不同的套接字1?不应该在accept ed执行套接字操作吗?

我正在尝试为套接字实现一个类,以便让我更轻松,并且这是练习我的oop技能的好方法....

1 个答案:

答案 0 :(得分:1)

一般来说,服务器需要一个套接字。此套接字用于设置服务器正在侦听的端口,并调用accept()以等待传入连接。

此外,每个客户端连接都需要一个套接字。这是accept()返回的新套接字。这是必要的,因为服务器可以处理多个客户端。如果您为一切使用了一个套接字,则无法确定哪个客户端正在向您发送消息,或者指示要向哪个客户端发送回复。