SocketServer连接的一点疑问...
比如 我用socket监听了服务器的90端口,是任何人都可以连接的.
但是这样就给人留了门路,比如对手恶意连接.
比如 我有一个list<socket> 每次连接 如果我发现有5个以上相同IP的,我认为是恶意,不让他们连接.
这样能保证我server的稳定性但是代码如何写?
socket.BeginAccept(new AsyncCallback(ClientAccepted), socket);
public void ClientAccepted(IAsyncResult ar)
{
var socket = ar.AsyncState as Socket;
var client = socket.EndAccept(ar);
if(判断是否超过)
{
//接下来怎么写? return吗?
}
}
------解决方案--------------------
你就开一个List<IPAddress> list就是了
然后每增加一个
var client = socket.EndAccept(ar);
if(list.Count(=>o.Address==client.Address)>=5)
{
client.Close();直接让其掉线;
}else
{
list.Add(client);
}
------解决方案--------------------
close()之前 先shutdown一下
------解决方案--------------------老板,买单,刷卡