11

API を介して NetApp デバイスと通信するアプリケーションがあります。Windows ファイアウォールがオンになっていると、api コマンドは失敗します。ファイアウォールをオフにすると、api コマンドが機能します。「Windows ファイアウォールがこのプログラムをブロックしています」などのメッセージが表示されません。

ドキュメントに目を通すと、API コマンドが機能するために開く必要がある TCP ポートが見つかったと思います。ポートがブロックされているかどうかをプログラムで検出して、潜在的な問題についてユーザーにメッセージを表示するにはどうすればよいですか?

4

4 に答える 4

11

ファイアウォール マネージャは、COM を介して自身を公開し、IsPortAllowed.

于 2011-08-04T14:40:20.103 に答える
8

あなたはこのようにそれを行うことができると思います: 試してみてください: チェックしたいポートの 1433 を変更してください。

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Net.Sockets;

namespace CheckPortStatus
{
    class Program
    {
        static void Main(string[] args)
        {
            try
            {
                TcpClient tcp = new TcpClient();
                tcp.Connect("localhost", Convert.ToInt16(1433));
                Console.WriteLine("online");
            }
            catch (Exception ex)
            {
                Console.WriteLine("offline");
                Console.WriteLine(ex.Message);
            }
        }
    }
}

また、マシンで使用可能なポートを確認するには、次を実行します。

C:>netstat -an |find /i "listening"

TCP 0.0.0.0:25 0.0.0.0:0 リスニング

TCP 0.0.0.0:80 0.0.0.0:0 リスニング

TCP 0.0.0.0:135 0.0.0.0:0 リスニング

于 2011-08-04T14:40:02.050 に答える
2

ポートがブロックされているかどうかを検出するには(Win7では、Windowsファイアウォールを開いてウィンドウファイアウォールのログを表示できます)、左側の[詳細設定]をクリックして、[監視]ブランチを開きます。

[ログ設定]セクションの[監視]タブには、Win7PCでは%systemroot%\system32\LogFiles\Firewall\pfirewall.logこのファイルを解析できるファイルにログを記録するオプションがあることに注意してください。私は過去に調査しましたが、これを行うためのユーティリティがありますが、結局のところ、これは単なる標準形式のログファイルです。

于 2011-08-04T14:33:16.030 に答える
0

ファイアウォールがアプリケーションをブロックしていると言及するかどうかは疑問です。さもなければ、侵入者は、システムへのアクセスを妨げているものに関する情報を入手できます:-)。

通常、ファイアウォールは、コンピューターとの間の接続試行をログに記録し、成功したかどうかを確認できます。

アップデート*

ネットワークで承認を試みることができます。一定時間何も受信しなかった場合は、接続に問題があると言えます。

于 2011-08-04T14:34:39.347 に答える