我正在使用Linux套接字在C++中编写客户端 - 服务器对.我希望服务器监听连接,并且当连接一个客户端时,服务器应该拒绝任何尝试连接的其他客户端.
我尝试通过将listen函数中的backlog参数设置为0和1来实现这一点,并且这些值中的任何一个似乎都不起作用.第一个客户端按预期连接,但任何后续客户端只在第一个客户端完成时阻塞.对我来说真正令人困惑的是,他们不会阻止连接到服务器,他们会在第一次阅读时阻止.
我在这里使用代码开始编写我的客户端和服务器.有谁知道我需要更改以使服务器只接受一个客户端连接,并删除任何后续连接尝试?
接受连接时,会创建一个新套接字.旧的仍旧用于监听未来的连接.
由于您希望一次仅允许1个连接,因此您可以接受连接,然后在检测到您正在处理另一个时,关闭新接受的套接字.
与接受接收后立即关闭新接受的套接字相比,您是否存在净差异?客户端会在尝试使用其套接字时立即知道(如果已经在服务器上等待读取调用,则立即知道),最后一个错误是:服务器主动关闭连接.