-1

重複の可能性:
ポート 5060 をリッスンする

SIP クライアントを開発しています。質問があります。SIPサーバーメッセージをキャッチするために5060ポートをリッスンしたい.このために、何かをコーディングします.(プログラムで管理者権限も取得します)

しかし、私は SocketException を取得します:「アクセス許可によって禁止されている方法でソケットにアクセスしようとしました」(ネイティブエラーコード: 10013)...

私のコード:

 private void ListenPort() {
        WindowsPrincipal pricipal = new WindowsPrincipal(WindowsIdentity.GetCurrent());
        bool hasAdministrativeRight = pricipal.IsInRole(WindowsBuiltInRole.Administrator);
        TcpListener server = null;
        Int32 port = 5060;
        IPAddress localAddr = IPAddress.Parse("192.168.1.33");
        server = new TcpListener(localAddr, port);

        Byte[] bytes = new Byte[1000];
        String data = null;
    while (hasAdministrativeRight == true)
    {
        server.Start();
        int i = 0;
        while (1==1)
        {
            TcpClient client = server.AcceptTcpClient();
            NetworkStream stream = client.GetStream();
            data = null;
            i = stream.Read(bytes, 0, bytes.Length);
            data += System.Text.Encoding.ASCII.GetString(bytes, 0, i);
            label3.Text += data;
            this.Refresh();
            Thread.Sleep(500);

        }
    }
}

どこに問題があると思いますか?

4

3 に答える 3

1

while ループので、最初の AcceptTcpClient 呼び出しの前にserver.Start() を呼び出す必要があります。また、リスナー IP に IPAddress.Parse("192.168.1.33") の代わりに IPAddress.Any を使用してみてください

于 2012-05-10T15:37:59.047 に答える
1

他のプログラムが既にポート 5060 を使用していないことを確認しましたか? それがこのエラーの意味です。

この問題に関するこの議論を参照してください: http://social.msdn.microsoft.com/Forums/en-US/netfxnetcom/thread/d23d471c-002a-4958-829e-eb221c8a4b76/

于 2012-05-10T15:31:40.860 に答える
0

対応するポートを使用する Windows サービスとしてインストールされていない他のSIP サーバープログラムがあることを確認します。

入力するnetstat -anと、「リッスンしている」ポートが表示されるか、ポートチェックソフトウェアをグーグルで検索しようとします.

また、SIP サーバーの構成を確認して、TCP または UDP で実行されているかどうかを確認します。

于 2012-08-10T12:20:47.977 に答える