1

C#のソケットについて質問があります。IPが禁止されているクライアントに接続できないようにしたいサーバーがあります。どちらも.NET4.0で作成されています。

サーバーは、ローカルネットワークだけでなく、インターネット(No-ipホスト名)を介して実行されています。問題は、クライアントのIPが毎日変化していることです。そのため、これらのクライアントを永久に禁止する方法がわかりません。クライアントのIPを禁止されているアドレスと比較するだけで、それらを禁止できることを私は知っています。

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

しかし、永久に禁止できるクライアントのIPを取得するにはどうすればよいですか?

さらに情報が必要な場合は、投稿します。

ジョー

4

3 に答える 3

2

多くの ISP は動的アドレス指定を使用しているため、IP アドレスを永久に禁止することはお勧めできません。多くの巻き添え被害なしに、求めるものを達成する簡単な方法はありません。

私が考えることができる唯一の方法は、単純な認証メカニズムを実装することです。

于 2012-11-14T17:11:23.123 に答える
0

ファイアウォール レベルで禁止する必要があるというマークの意見に同意します。

クライアントの IP を取得したい場合は、ソケットのRemoteEndPoint プロパティを使用してから、そのエンドポイント (親クラス)IPEndPointにキャストし、 Address プロパティToStringを使用して IPv4 または IPv6 のナイス フォーマットを取得します。

于 2012-11-14T17:09:12.613 に答える
0

明らかに、クライアントの MAC アドレスを取得するまで方法はありません (ただし、ハードウェア ファイアウォールを介して処理するのが最善の方法です)。

MAC アドレスを見つける必要がある場合は、これを参照してください: Reliable method to get machine's MAC address in C#

于 2012-11-14T17:09:45.363 に答える