相关疑难解决方法(0)

套接字选项SO_REUSEADDR和SO_REUSEPORT,它们有何不同?它们在所有主要操作系统中的含义是否相同?

man pages和程序员单证套接字选项SO_REUSEADDR,并SO_REUSEPORT针对不同的操作系统,不同的,往往非常混乱.有些操作系统甚至没有选项SO_REUSEPORT.WEB中充满了关于此主题的矛盾信息,并且通常您可以找到仅对特定操作系统的一个套接字实现的信息,这些信息甚至可能在文本中没有明确提及.

那究竟有什么SO_REUSEADDR不同SO_REUSEPORT呢?

系统是否没有SO_REUSEPORT更多限制?

如果我在不同的操作系统上使用任何一个,那么预期的行为究竟是什么?

unix sockets linux windows portability

630
推荐指数
2
解决办法
24万
查看次数

两个应用程序可以侦听同一个端口吗?

同一台机器上的两个应用程序可以绑定到同一个端口和IP地址吗?更进一步,一个应用程序可以收听来自某个IP和另一个远程IP的请求吗?我知道我可以有一个应用程序从两个线程(或叉子)开始有类似的行为,但两个没有任何共同点的应用程序可以做同样的事情吗?

sockets port udp tcp communication

262
推荐指数
7
解决办法
26万
查看次数

为什么OS X允许两次侦听同一个TCP端口?

我试图通过用netcat监听某些端口来调试OS X上Jenkins的端口分配问题,这导致了一些奇怪的结果.


在OS X 10.8.2上的终端中:

$ uname -rs
Darwin 12.2.1

$ nc -l 54321
Run Code Online (Sandbox Code Playgroud)

然后在第二个终端:

$ nc -l 54321

在第三个终端中,lsof显示两个实例都绑定到同一个端口:

$ lsof -i | grep 54321
nc  70706 chris    3u  IPv4 0x55618c024692f4d1      0t0  TCP *:54321 (LISTEN)
nc  70769 chris    3u  IPv4 0x55618c0232cb8661      0t0  TCP *:54321 (LISTEN)
Run Code Online (Sandbox Code Playgroud)

在Linux上:

第一终端:

$ uname -rs
Linux 3.2.0-34-generic

$ nc -l 54321
Run Code Online (Sandbox Code Playgroud)

第二终端:

$ nc -l 54321
nc: Address already in use
Run Code Online (Sandbox Code Playgroud)

为什么OS X也没有报告该地址已被使用?

sockets macos netcat

8
推荐指数
1
解决办法
1787
查看次数

标签 统计

sockets ×3

communication ×1

linux ×1

macos ×1

netcat ×1

port ×1

portability ×1

tcp ×1

udp ×1

unix ×1

windows ×1