听5060号港口

我正在开发一个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)…

你对此有什么建议吗?

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

Microsoft对您的问题的评价 :

WSAEACCES(10013)

  • 翻译 :许可被拒绝
  • 说明 :尝试以其访问权限禁止的方式访问套接字。 例如,当广播地址用于sendto但是未使用setsockopt(SO_BROADCAST)设置广播权限时会发生此错误。

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