听5060号港口

时间:2012-05-08 21:57:45

标签: c# sockets

我正在开发一个SIP客户端。为此,我必须侦听端口5060以获取传入的SIP服务器消息。为此我编了一些东西。 (另外,我在程序中使用管理员权限。)

    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)...

你对此有什么建议吗?

1 个答案:

答案 0 :(得分:1)

您似乎正在运行两个应用程序,他们正在尝试 访问同一个套接字。

Microsoft says about your problem

  

WSAEACCES(10013)

     
      
  • 翻译:权限被拒绝
  •   
  • 说明:尝试了   以访问禁止的方式访问套接字   权限。例如,广播地址时会发生此错误   用于发送到但不使用广播权限   setsockopt的(SO_BROADCAST)。

         

    WSAEACCES的另一个可能原因   错误是当调用bind(Wsapiref_6vzm.asp)函数时(在   Microsoft Windows NT 4.0 Service Pack 4 [SP4]或更高版本),另一个   程序,服务或内核模式驱动程序绑定到同一地址   独家访问。这种独家访问是一项新功能   Windows NT 4.0 SP4及更高版本,它是通过使用实现的   SO_EXCLUSIVEADDRUSE选项。

  •