C#中带有接受列表的服务器

时间:2015-01-28 07:49:44

标签: c# tcp client server

我有一个tcp服务器/客户端系统,我只想接受特定的客户端,所以我创建一个接受列表并在接受后检查客户端IP,然后关闭连接,如果它不在接受列表中。由于客户数量众多,此解决方案会导致性能问题。 如何在接受连接之前获取客户端IP?或者还有其他方法可以解决这个问题吗?

我的代码:

TcpClient tcpClient = listener.AcceptTcpClient();
if (!acceptList.Contains(tcpClient.Client.RemoteEndPoint))
{
    tcpClient.Close();
    continue;
}

1 个答案:

答案 0 :(得分:0)

据我所知,在接受C#中的客户端之前,您无法访问远程端点信息。

在非托管代码中,应用程序可以通过在WSAAccept()调用中提供回调方法来决定是否接受连接。也许有足够的P / Invoke技能你可以自己打电话;我怀疑这是值得的努力。

同样好奇你所处的情况,这些“流氓客户”正在导致性能问题。你真的得到了数以千计的不良连接尝试吗?您可以考虑使用防火墙。