同一时刻只允许一个客户端连接的例子

最近做一个关于服务器和客户端互相通信的程序,题目有两个要求:1.服务器只能接收一个客户端的连接,当有第二个客户端连接时就会失败;2.当已经连接的客户端断开后,其他的客户端就可以去连接服务器了。这样的要求看似很简单,但做的过程中我才发现,客户端程序很好写,可服务器端有点麻烦了。首先只能接收一个客户端连接的服务器程序,这个很另类,网上找了大多都是研究怎么让服务器可以同时与多个客户端打交道,于是只能自己慢慢搞了。实践过程中,我发现,只要服务器端在调用了accept函数之后把用于listen用的socket给关闭掉
摘要由CSDN通过智能技术生成

最近做一个关于服务器和客户端互相通信的程序,题目有两个要求:1.服务器只能接收一个客户端的连接,当有第二个客户端连接时就会失败;2.当已经连接的客户端断开后,其他的客户端就可以去连接服务器了。

 

这样的要求看似很简单,但做的过程中我才发现,客户端程序很好写,可服务器端有点麻烦了。首先只能接收一个客户端连接的服务器程序,这个很另类,网上找了大多都是研究怎么让服务器可以同时与多个客户端打交道,于是只能自己慢慢搞了。

实践过程中,我发现,只要服务器端在调用了accept函数之后把用于listen用的socket给关闭掉,这样就能让第二个客户端连接时返回SOCKET_ERROR。第一个要求算是完成了,下面是第二个要求。要完成第二个要求首先就得能知道客户端断开连接了,然后再重新listen并accept,重复第一次的步骤。这个步骤说来也简单,但到底选用哪个模型来实现呢,细节问题怎么处理呢?可是苦了我这个菜鸟。还好最后找到方法了,把代码贴到这里保存下

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值