Я работаю над многопроцессорным сервером сокета с библиотекой boost.boost asio SO_REUSEPORT
Каждый процесс запускает io_service
.
Я хочу, чтобы все процессы принимались на одном и том же порту.
Я знаю SO_REUSEPORT
(после ядра linux 3.9).
как этот питон скрипт
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()
Но я не знаю, как использовать эту опцию в подталкивание ASIO io_service?
Вы можете искать это. Это часто обсуждалось (с акцентом на то, когда использовать/правильно). В процессе вы можете увидеть различные способы установки порта повторного использования-addr/reuse-port. Некоторые из них зависят от платформы IIRC – sehe
@sehe я искал в google, но не помог – Yueyoum