我有一個TcpClient
和TcpListener
基於Windows服務在我的網絡上的兩臺機器上運行。客戶端和服務器節點都使用相同的Windows服務。服務運行爲Local System
和PC01
是Win7 x64,PC02
是Win7 x86。Windows服務(TCP客戶端/偵聽器)防火牆例外塊流量
從客戶端到服務器的連接嘗試期間,應用程序拋出了SocketException
10060(連接超時),並且我發現由應用程序的自動防火牆配置代碼生成的Windows防火牆例外不允許TCP流量通過。
退一步,我想下面的測試順序上PC01
與PC02
防火牆永久禁用刪除它作爲一個變量:
- 禁用防火牆
PC01
- 這個工作。 - 手動啓用防火牆
PC01
和手動添加了一個例外,以允許端口12345
上的所有入站TCP
流量 - 此工作。 - 進一步限制例外,只允許來自本地子網的遠程流量 - 這有效。
- 進一步限制例外,只允許(所有)服務 - 這有效。
- 進一步限制例外情況,通過從服務列表中選擇或輸入服務短名稱來允許特定服務 - 此失敗。
- 試圖改爲通過選擇
myservice.exe
可執行文件將例外限制爲特定服務 - 此失敗。
當我的Windows服務在異常僅限於特定服務時阻止其工作時,它是如何工作的?是否有我需要注意的Windows服務警告?開放端口是所有服務的唯一解決方案嗎?
編輯:我用netstat -a -n -b
收集關於活動連接和偵聽端口信息。以下摘錄詳細信息有關我的服務的信息:
Active Connections
Proto Local Address Foreign Address State
TCP 0.0.0.0:12345 0.0.0.0:0 LISTENING
[myservice.exe]
...
UDP 0.0.0.0:12344 *:*
[myservice.exe] (listening for UDP broadcast packets)
...
UDP 0.0.0.0:62794 *:*
[myservice.exe] (this is an outbound broadcast packet)
感謝大家的任何見解,你可以提供。
我已經發布了這個SO而不是SF,因爲我認爲它必須與我的特定服務有關。 – khargoosh
您可以使用'netstat -a -n -b'來查看偵聽端口和相關的可執行文件;它是在12345端口上偵聽的可執行文件嗎? –
@HarryJohnston謝謝你 - 是的,我的可執行文件出現在活動連接列表中,既在預期的TCP端口上,也在UDP端口上,我也打開了。我會將這些信息添加到問題中。 – khargoosh