两个听众在同一个端口上?

时间:2013-07-31 20:32:45

标签: windows sockets

我很惊讶地看到netstat报告在同一端口上侦听两个进程:

c:\Windows\System32>netstat -ao | find "8083"
  TCP    0.0.0.0:8083           ***qa-w2k8-05:0        LISTENING       5532
  TCP    0.0.0.0:8083           ***qa-w2k8-05:0        LISTENING       1572
  TCP    [::]:8083              ***qa-w2k8-05:0        LISTENING       5532
  TCP    [::]:8083              ***qa-w2k8-05:0        LISTENING       1572

c:\Windows\System32>tasklist | find "5532"
java.exe                      5532 RDP-Tcp#0                  2  1,448,776 K

c:\Windows\System32>tasklist | find "1572"
FrameworkService.exe          1572 Services                   0     11,016 K

Java进程是我的Web服务器,FrameworkService是Mcafee。 http请求甚至没有到达我的服务器所以我假设它到达Mcafee。难道他们中的一个不应该使用Bind错误/地址或者出现这样的错误吗?

我正在运行Microsoft Windows Server 2008 R2 Enterprise,6.1.7600 N / A Build 7600

1 个答案:

答案 0 :(得分:3)

一般来说,你是对的。但是,有一些选项可以让这种事情发生。您可能希望查看SO_REUSEADDR以及它如何影响行为。

基本上,如果你设置SO_REUSEADDR另一个进程可以bind套接字。有关此问题的详细信息(以及SO_EXCLUSIVEADDRUSE选项),请查看标题为Using SO_REUSEADDR and SO_EXCLUSIVEADDRUSE的MSDN页面。