假设应用层协议是通过 UDP 实现的。需要客户端超时,因此服务器需要保持与之对话的每个客户端的状态。
也假设select
被使用。
实现多线程服务器总是最好的吗?我认为链接列表也会这样做,其中 server timeout
time=Earliest Timeout of a client- CurrentTime
。链接列表将具有与保持客户端状态相同的功能,同时避免创建新线程的开销(尽管为服务器引入了一些复杂性来维护特定于客户端的超时)。如果选择多线程,那么为新客户端调用新套接字是否最好?这将引入系统资源开销。但我认为默认服务器套接字(
bind
具有服务器众所周知的端口)会做同样的事情,因为它有缓冲区(嗯..对于可扩展的客户端数量来说可能不够长..)
谢谢!