【问题标题】:Windows service TCP communication in local network本地网络中的 Windows 服务 TCP 通信
【发布时间】:2020-01-02 15:39:08
【问题描述】:

我一直在尝试设置一个在后台运行并通过 TCP 与服务器通信的服务。我正在使用 .NET Core 设置 TCPListener,并在另一台设备上尝试通过 TCPClient 远程连接。如果我在服务之外使用它,在用户执行的程序中,它工作得很好。但是,如果我启动我的服务,我监听的端口只接收来自 127.0.0.1 的消息,而不是来自本地网络的消息。

我怀疑该服务需要一些权限才能接受网络通信,但这并不是我真正的专业领域。有什么建议吗?

没有错误信息。使用 Wireshark 我确认主机上有一个传入的 TCP 请求,但没有与我的服务建立连接。

提前谢谢o/)

编辑: 我发现如果我禁用主机 PC 上的公共防火墙,它就可以工作。但我并不真正精通阅读和解释日志。相关部分内容如下:

防火墙日志输出

Fields: date time action protocol src-ip dst-ip src-port dst-port size tcpflags tcpsyn tcpack tcpwin icmptype icmpcode info path
                                                                                                                                                                                                2019-08-29 15:43:58 DROP UDP 192.168.7.98 192.168.7.255 34638 15600 63 - - - - - - - RECEIVE
2019-08-29 15:44:01 ALLOW UDP 192.168.7.117 192.168.7.70 137 137 0 - - - - - - - SEND
2019-08-29 15:44:02 DROP TCP 192.168.7.46 192.168.7.117 49958 13000 52 S 1580866692 0 64240 - - - RECEIVE
2019-08-29 15:44:03 DROP UDP 192.168.7.62 192.168.7.255 57621 57621 72 - - - - - - - RECEIVE
2019-08-29 15:44:04 DROP UDP 192.168.7.98 192.168.7.255 54123 15600 63 - - - - - - - RECEIVE
2019-08-29 15:44:05 DROP TCP 192.168.7.46 192.168.7.117 49958 13000 52 S 1580866692 0 64240 - - - RECEIVE
2019-08-29 15:44:10 DROP UDP 192.168.7.98 192.168.7.255 58249 15600 63 - - - - - - - RECEIVE
2019-08-29 15:44:11 DROP TCP 192.168.7.46 192.168.7.117 49958 13000 52 S 1580866692 0 64240 - - - RECEIVE

(重要的是目标为 192.168.7.117:13000 的丢弃包。)有没有人知道如何阅读这些包并找出它阻止它的原因,以及如何阻止它这样做?

【问题讨论】:

  • 查看服务控制面板并告诉我们该服务以什么用户身份运行
  • 你能添加你的 Startup.cs 吗?
  • 不要在环回 127.0.0.1 上监听。可能并不总是有效。用于端点 IP.Any。有一个可以设置不同的主机文件,因此它不起作用。此外,当您有多个网卡时,只有一个可能会将传入消息转发到 127.0.0.1。 IP.Any 监听所有网卡。
  • @CaiusJard 我尝试将服务作为 LocalService、LocalSystem 和 NetworkService 运行,但对它没有影响。如果您因为权限而询问,我尝试使用“sc sdset D:AR(A;;GA;;;BA)(A;;GA;;;SY)(A;;GA;;; IU)S:(AU;FA;GA;;;WD)" 给它一般津贴......好吧一切(我现在已经绝望了),也没有效果。 :c
  • @jdweng 我使用的 TCPListener 适用于 IP.Any,0.0.0.0:13000。使用 netstat 它也显示为这样

标签: c# .net windows service tcp


【解决方案1】:

更新:

问题在于公共防火墙阻止了该端口的服务通信。通过添加两个允许我的 Windows 服务与分配的端口号进行通信的规则来轻松修复。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-08-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-08-11
    • 1970-01-01
    相关资源
    最近更新 更多