【问题标题】:Causes of TCPClient socket error 0x80004005TCPClient套接字错误0x80004005的原因
【发布时间】:2018-09-24 22:11:58
【问题描述】:

“System.Net.Sockets.SocketException (0x80004005): 试图以访问权限禁止的方式访问套接字”

好的,我知道这个问题之前在 S.O. 上发生过很多次,但我找不到解决方案。这是我的问题:这可能是什么原因。

积分:

  • 发生与防火墙无关
  • 端口已打开
  • 目标已打开,并且过去的连接一直正常
  • 由于连接正常,无需更改防火墙或病毒扫描程序,就可以排除这些问题。
  • 以管理用户身份运行
  • 源端口是23876
  • 目标端口是可变的,取决于从另一个来源检测到的客户端
  • Windows 8.1

还有一点 - 移植到 .NET Core 后也发生此错误。

唯一的变化是我正在尝试共享端口,但我看不到它与错误之间的连接。连接代码是

 client = new TcpClient();
                         client.Client.SetSocketOption(
                             SocketOptionLevel.Socket, SocketOptionName.ReuseAddress, true);
                         client.Client.SetSocketOption(SocketOptionLevel.IPv6, SocketOptionName.IPv6Only, 0);
                         client.Client.Bind(ipLocalEndPoint);
                         client.Client.Connect(ep);

重用本地端点的地方。

此错误的可能原因是什么?每次 BIND 调用都会发生这种情况。

【问题讨论】:

  • 您要打开什么端口号?您的代码在什么访问级别(管理员、标准用户)下执行?什么操作系统?请参阅this answer,至少有一个原因表明信息与添加到您的帖子相关。
  • @KenWhite 谢谢肯,这都是管理员模式。立即添加信息。

标签: c# sockets tcpclient


【解决方案1】:

好吧,这一切都证明是我非常愚蠢。

我所做的,忘记了我所做的,是在同一个端口上建立一个 TcpListener,这个代码 _tcpListener.ExclusiveAddressUse = false; 没有像我预期的那样工作。

【讨论】:

    猜你喜欢
    • 2020-04-27
    • 1970-01-01
    • 1970-01-01
    • 2013-06-23
    • 1970-01-01
    • 2014-07-23
    • 1970-01-01
    • 2021-11-17
    • 1970-01-01
    相关资源
    最近更新 更多