当前位置:  开发笔记 > 编程语言 > 正文

如何创建一次只接受一个连接的TCP服务器?

如何解决《如何创建一次只接受一个连接的TCP服务器?》经验,为你挑选了1个好方法。

我正在使用Linux套接字在C++中编写客户端 - 服务器对.我希望服务器监听连接,并且当连接一个客户端时,服务器应该拒绝任何尝试连接的其他客户端.

我尝试通过将listen函数中的backlog参数设置为0和1来实现这一点,并且这些值中的任何一个似乎都不起作用.第一个客户端按预期连接,但任何后续客户端只在第一个客户端完成时阻塞.对我来说真正令人困惑的是,他们不会阻止连接到服务器,他们会在第一次阅读时阻止.

我在这里使用代码开始编写我的客户端和服务器.有谁知道我需要更改以使服务器只接受一个客户端连接,并删除任何后续连接尝试?



1> Brian R. Bon..:

接受连接时,会创建一个新套接字.旧的仍旧用于监听未来的连接.

由于您希望一次仅允许1个连接,因此您可以接受连接,然后在检测到您正在处理另一个时,关闭新接受的套接字.

与接受接收后立即关闭新接受的套接字相比,您是否存在净差异?客户端会在尝试使用其套接字时立即知道(如果已经在服务器上等待读取调用,则立即知道),最后一个错误是:服务器主动关闭连接.

推荐阅读
小白也坚强_177
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有