C#Listenin 5060 Port

时间:2012-05-10 15:28:47

标签: c#

  

可能重复:
  Listening to Port 5060

我正在开发一个SIP客户端。我有一个问题。 我想听5060端口用于捕获SIP服务器消息。为此,我编写了一些东西。(另外我在程序中使用管理员权限)

但是我得到了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);

        }
    }
}

你认为这个问题在哪里?

3 个答案:

答案 0 :(得分:1)

您是否检查过其他程序是否已使用端口5060?这就是这个错误的意思。

请参阅有关此事的讨论:http://social.msdn.microsoft.com/Forums/en-US/netfxnetcom/thread/d23d471c-002a-4958-829e-eb221c8a4b76/

答案 1 :(得分:1)

您需要在while循环和第一个AcceptTcpClient调用之前调用server.Start()外部。 也尝试使用IPAddress.Any而不是IPAddress.Parse(“192.168.1.33”)作为你的监听器ip

答案 2 :(得分:0)

确保未将任何其他 SIP服务器程序安装为使用相应端口的Windows服务。

键入netstat -an,它会显示“监听”端口或尝试使用Google端口检查软件。

并检查您的SIP服务器配置是否通过TCP或UDP运行。