1

我有一个关于 C# 中的套接字的问题。我有一个服务器,我想阻止它连接到 IP 被禁止的客户端。两者都是用 .NET 4.0 制作的。

服务器通过 Internet 运行(无 IP 主机名),而不仅仅是在本地网络中。问题是客户端的IP每天都在变化,所以我不知道如何永久禁止这些客户端。我知道我可以通过简单地将客户端的 IP 与任何被禁止的地址进行比较来禁止它们。

if ( banned_ip == clients_ip )
{
     client.Disconnect();
}

但是如何获取我可以永久禁止的客户 IP 呢?

如果您需要更多信息,我会发布它们。

4

3 回答 3

2

永久禁止 IP 地址是一个坏主意,因为许多 ISP:s 使用动态寻址。在没有大量附带损害的情况下,没有简单的方法可以实现您的要求。

我认为可行的唯一方法是实现一个简单的身份验证机制。

于 2012-11-14T17:11:23.123 回答
0

显然,在您获得客户的 MAC 地址之前是没有办法的(但是最好的方法是通过硬件防火墙来处理它)。

如果您需要查找 MAC 地址,请参阅此: Reliable method to get machine's MAC address in C#

于 2012-11-14T17:09:45.363 回答
0

我同意 Marc 的观点,即您应该在防火墙级别禁止。

如果您想获取客户端的 IP,请使用套接字的RemoteEndPoint 属性,然后您可以将该端点(父类) 转换为IPEndPoint并使用Address 属性ToString来获取 IPv4 或 IPv6 的好格式。

于 2012-11-14T17:09:12.613 回答