假设我们有一个带有套接字sa和new_socket的服务器程序。我正在使用的教程使用socket sa和new_socket,以及两个名为sockaddr_in
和server
的{{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技能的好方法....
答案 0 :(得分:1)
一般来说,服务器需要一个套接字。此套接字用于设置服务器正在侦听的端口,并调用accept()
以等待传入连接。
此外,每个客户端连接都需要一个套接字。这是accept()
返回的新套接字。这是必要的,因为服务器可以处理多个客户端。如果您为一切使用了一个套接字,则无法确定哪个客户端正在向您发送消息,或者指示要向哪个客户端发送回复。