日期:2014-05-16  浏览次数:21008 次

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);
}

------解决方案--------------------
引用:


你就开一个List<IPAddress> list就是了
然后每增加一个

  var client = socket.EndAccept(ar);
 if(list.Count(=>o.Address==client.Address)>=5)
    {
         client.Close();直接让其掉线;
    }else
  {
     list.Add(client);
}

close()之前 先shutdown一下
------解决方案--------------------
老板,买单,刷卡