0

SIPクライアントを開発しています。このために、着信SIPサーバーメッセージのポート5060をリッスンする必要があります。このために私は何かをコーディングしました。(また、私はプログラムの管理者権限を取得します。)

    WindowsPrincipal pricipal = new WindowsPrincipal(WindowsIdentity.GetCurrent());
    bool hasAdministrativeRight = pricipal.IsInRole(WindowsBuiltInRole.Administrator);
    if (hasAdministrativeRight == true)
    {
        TcpListener server;
        Int32 port = 5060;
        IPAddress localAddr = IPAddress.Parse("127.0.0.1");
        server = new TcpListener(localAddr, port);
        server.Start();
        Byte[] bytes = new Byte[256];
        String data = null;
        while (true)
        {
            Console.Write("Waiting for a connection... ");
            TcpClient client = server.AcceptTcpClient();
            Console.WriteLine("Connected!");
            data = null;
            NetworkStream stream = client.GetStream();
            int i;
            while ((i = stream.Read(bytes, 0, bytes.Length)) != 0)
            {
                data = System.Text.Encoding.ASCII.GetString(bytes, 0, i);
                Console.WriteLine("Received: {0}", data);
                data = data.ToUpper();

                byte[] msg = System.Text.Encoding.ASCII.GetBytes(data);
                stream.Write(msg, 0, msg.Length);
                Console.WriteLine("Sent: {0}", data);
            }

            client.Close();
        }
    }

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

これについての提案はありますか?

4

1 に答える 1

1

2つのアプリケーションを実行していて、それらが同じソケットにアクセスしようとしているようです。

マイクロソフトがあなたの問題について言っていること:

WSAEACCES(10013)

  • 翻訳:許可が拒否されました
  • 説明:アクセス許可によって禁止されている方法でソケットにアクセスしようとしました。たとえば、このエラーは、sendtoにブロードキャストアドレスが使用されているが、setsockopt(SO_BROADCAST)を使用してブロードキャスト権限が設定されていない場合に発生します。

    WSAEACCESエラーのもう1つの考えられる理由は、バインド(Wsapiref_6vzm.asp)関数が呼び出されたときに(Microsoft Windows NT 4.0 Service Pack 4 [SP4]以降)、別のプログラム、サービス、またはカーネルモードドライバーがバインドされていることです。排他的アクセスを持つ同じアドレス。このような排他的アクセスは、Windows NT 4.0 SP4以降の新機能であり、SO_EXCLUSIVEADDRUSEオプションを使用して実装されます。

于 2012-05-08T22:00:43.277 に答える