【问题标题】:What causes TcpListener Socket Error 10013?什么导致 TcpListener 套接字错误 10013?
【发布时间】:2011-03-19 21:12:33
【问题描述】:

我收到错误 10013。msdn 说它是权限被拒绝错误。

An attempt was made to access a socket in a way forbidden by its access permissions

我的应用程序运行良好。然后我进行了代码更改并重新启动它。我得到了那个错误。我怀疑我必须重用端口,所以我写了这个,但仍然没有运气

server.Server.SetSocketOption(SocketOptionLevel.Socket, SocketOptionName.ReuseAddress, 1);

我该如何解决这个错误?

-编辑-

我确实注意到如果我关闭 FireFox(带有许多选项卡)并运行它可以工作的程序... 也许它与连接有关? (我有 ajax 与之通信)。我想知道这是怎么回事。

【问题讨论】:

  • 也许 firefox 正在使用您的应用试图获取的端口。

标签: .net sockets windows-7 tcplistener


【解决方案1】:

这个错误代码是由于试图bind 到另一个进程独占使用的端口引起的。最常见的原因是意外启动同一个服务两次。

如果有疑问,快速检查 netstat -a TCPView 应该会发现哪个进程打开了端口。

【讨论】:

  • 我看到了本地/远程 ips 和端口列表(连同状态),但我没有看到任何进程名称。
  • 我还是不知道发生了什么。感觉就像我的 winform 应用程序仍在绑定地址,但它不应该。注意:有一半时间我很难杀死它。
  • 对不起,应该是 TCPView,而不是 netstat;答案已更新。你绑定到哪个端口?
【解决方案2】:

就我而言,在运行可执行文件时,Delphi 应用程序上的 Socket Error #10013 Access Denied 的解决方案是“以管理员身份运行”。对于那些通常在本地管理员之外运行的人来说,这可能是一个解决方案。

【讨论】:

    【解决方案3】:

    另一种可能产生此错误(使用 WCF)的情况是,您在同一台服务器上使用不同的协议(例如 http 和 net.tcp)但使用相同的端口定义了两个端点,如下所示:

    <service name="yourService">
    <endpoint address="http://localhost:2112/ys" binding="basicHttpBinding" name="basicHttpEndPoint"
      contract="zza.Services.IzzaService" />
    <endpoint address="net.tcp://localhost:**2112**/" binding="netTcpBinding"
      name="netTcpEndPoint" contract="IyourService" />
    <host>
      <baseAddresses>
        <add baseAddress="http://localhost:**2112**" />
      </baseAddresses>
    </host>
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-06-25
      • 1970-01-01
      • 1970-01-01
      • 2011-04-22
      相关资源
      最近更新 更多