我想知道处理以下场景的最佳方法是什么:
我有一台服务器,一次只能处理10个连接,在此期间服务器忙于与客户端进行交互。但是,当服务器繁忙时,可能会有新的客户端想要连接(作为服务器将接受的下10个连接的一部分)。服务器只应在完成所有之前的10个代理后接受新连接。
现在,我希望有一个自动方式让待处理的客户端等待并连接到服务器一旦可用(即完成前10个客户端)。
到目前为止,我可以想到两种方法:1。在客户端有一个文件监视器,以便客户端监视服务器写入的文件。当服务器完成10个客户端时,它将写入文件,待处理的客户端将知道是时候连接; 2.让待处理的客户端每隔5-10秒左右尝试连接服务器,直到成功为止,服务器将返回一条消息,指示它是否准备就绪。
任何其他建议都会受到欢迎。感谢。
答案 0 :(得分:1)
在您提供的两个选项中,我倾向于“Ping”服务器的第二个选项。我认为让服务器将文件写入客户端触发另一次尝试会更复杂。
我认为您应该能够让客户端等待并发送READY信号。保持正在运行的连接请求队列(我相信来自Socket.Connection.EndPoint)。当一个套接字完成时,接受队列中的下一个Socket。