【发布时间】:2016-04-08 09:21:02
【问题描述】:
我正在使用 boost 库开发多进程套接字服务器。
每个进程运行一个io_service。
我希望这个进程都接受同一个端口。
我知道SO_REUSEPORT(在 linux 内核 3.9 之后)会有所帮助。
喜欢这个 python 脚本
import socket
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEPORT, 1)
s.bind(('0.0.0.0', 9091))
s.listen(1)
while True:
conn, addr = s.accept()
print "new connection"
while True:
data = conn.recv(100)
print "got data", data
if not data or data == 'exit':
break
conn.close()
但是我不知道如何在 boost asio io_service 中使用这个选项?
【问题讨论】:
-
你可以搜索这个。它经常被讨论(强调何时使用/正确性)。在这个过程中你可以看到设置reuse-addr/reuse-port的各种方式。其中一些是依赖于平台的 IIRC
-
@sehe 我在 google 上搜索过,但没有帮助