我对C#中的套接字有疑问。我有一个服务器,我想阻止连接到禁止IP的客户端。两者都是用.NET 4.0制作的。
服务器通过Internet(No-ip主机名)运行,而不仅仅是在本地网络中运行。问题是客户的IP每天都在变化,所以我不知道如何永久地禁止这些客户。我知道我可以通过简单地将客户的IP与任何被禁止的地址进行比较来禁止它们。
if ( banned_ip == clients_ip )
{
client.Disconnect();
}
但是如何获取客户端的IP我可以永久禁止?
如果您需要更多信息,我会发布它们。
乔
答案 0 :(得分:2)
永久禁止IP地址是一个坏主意,因为许多ISP使用 dynamic addressing 。没有很多附带损害,没有简单的方法可以达到你的要求。
我能想到的唯一方法就是实现一种简单的身份验证机制。
答案 1 :(得分:0)
我同意Marc你应该禁止在防火墙级别。
如果您想获取客户端的IP,请使用套接字的RemoteEndPoint Property,然后您可以将Endpoint (parent class)转换为IPEndPoint并使用Address property和ToString以获得IPv4或IPv6格式。
答案 2 :(得分:0)
显然,在获得客户的MAC地址之前是没有办法的(但最好的方法是通过硬件防火墙处理它)。
如果您需要查找MAC地址,请参阅此信息: Reliable method to get machine's MAC address in C#