【问题标题】:Windows TCP/IP Listener Service "Only one usage of each socket address (protocol/network address/port) is normally permitted"Windows TCP/IP 侦听器服务“每个套接字地址(协议/网络地址/端口)通常只允许使用一次”
【发布时间】:2015-05-10 00:14:28
【问题描述】:

我有一个侦听 tcp/ip 连接的 Windows 服务。当我运行该服务时,我收到错误“每个套接字地址(协议/网络地址/端口)通常只允许使用一次”。我可以毫无问题地在控制台应用程序中运行代码。

服务开始并在自己的线程上创建侦听器:

 protected override void OnStart(string[] args)
    {
        this.tcpListener = new TcpListener(IPAddress.Parse(IpAddress.Any), 8100);
        this.listenThread = new Thread(new ThreadStart(ListenForClients));
        this.listenThread.Start();
    }

启动监听器:

private void ListenForClients()
    {
        this.tcpListener.Start(); //<-----Produces the error
        System.Threading.Thread.Sleep(5000);
        this.tcpListener.Stop();
    }

【问题讨论】:

  • 你确定你的开发环境没有监听那个端口吗?也许是一个冻结的控制台应用程序?您是否停止线程并关闭端口?
  • 原来如此,谢谢。

标签: c# multithreading sockets tcplistener


【解决方案1】:

我刚刚测试了您的代码,它可以在我的计算机上运行。 如果您想知道哪个程序正在使用您计算机上的该端口,我建议您使用 microsoft 的 SysInteralSuite 中的“tcpview”工具。

你可以在这里找到它。 https://technet.microsoft.com/en-us/sysinternals/bb842062.aspx

【讨论】:

  • 我检查了 netstat 并没有看到正在使用的端口。这会给我一个教训,谢谢。
猜你喜欢
  • 2012-04-06
  • 2019-05-03
  • 2017-06-09
  • 2011-01-15
  • 2010-12-26
  • 2010-11-23
相关资源
最近更新 更多