Skip to content

Instantly share code, notes, and snippets.

@mydreambei-ai
Created August 21, 2024 09:09
Show Gist options
  • Save mydreambei-ai/3bbfd1b715bae3ab95a636d8f950d429 to your computer and use it in GitHub Desktop.
Save mydreambei-ai/3bbfd1b715bae3ab95a636d8f950d429 to your computer and use it in GitHub Desktop.
macos socket so_reuseport does not work
import socket
import select
def test():
c = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
c.connect(("", 8877))
c.send(b"hello world")
print(c.recv(1024))
c.close()
if __name__ == "__main__":
import threading
threads = []
for _ in range(1000):
t = threading.Thread(target=test, args=())
t.start()
threads.append(t)
select.select([], [], [])
import socket
import os
import select
def create_server(addr):
server = socket.create_server(addr, backlog=10, reuse_port=True)
server.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
while 1:
client, addr = server.accept()
while 1:
data = client.recv(1024)
print(f"{addr} {data} {os.getpid()}")
client.send(data)
break
client.close()
exit()
if __name__ == "__main__":
for _ in range(4):
pid = os.fork()
if pid:
continue
else:
create_server(("", 8877))
select.select([], [], [])
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment