我想限制客户端的连接数,我设置了一个变量用来控制连接数,当到了连接数就不允许客户端继续连接,具体实现大概这样:
while (true) { Socket so = sock.Accept(); if (i <= 3) { list.Add(so); i += 1; Console.WriteLine("当前连接人数:" + i); //接受客户端的名字并保存 。(省略一些代码) } else { so.Send(Encoding.Default.GetBytes("服务器已达最大人数,无法连接")); so.Close(); } }
我将接受的socket存到一个List里面,但是我将客户端连接到3个的时候,else里面的代码也不执行,为什么?
还有一个问题是,如果其中一个客户端断开了连接,怎么才能不影响其他客户端的正常操作,比如我现在其中一个客户端断开了连接,但是我在其他客户端发送信息时服务端会报错,错误提示是cannot access a disposed object是不是我服务端缺少了什么代码来处理这个情况?
方案推荐指数:40
因为你看到控制台显示
当前连接人数:4
所以以为出问题了?搞清楚你自己写的逻辑吧