REUSEADDRオプションを使用しても、同じポートセットを再利用することはできません。それは私に98、 "アドレスは既に使用中"のエラーを与えます。Pythonで同じポートを2回使用する方法
2番目のグループの前に最初のソケットグループを強制終了する方法はありますか?
以下のコードでは、まったく同じことを2回行っています。
servers = []
port_list = [i for i in range(40007, 40107)]
for port in port_list:
ds = ('', port)
server = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
server.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
server.bind(ds)
server.listen(1)
servers.append(server)
found,_,_ = select.select(servers, [], [])
found = found[0]
conn, addr = found.accept()
print 'Connected by', addr
data = conn.recv(1024)
print "received", data
conn.sendall("message!!")
conn.close()
#time.sleep(10) # even this doesn't work
port_list = [i for i in range(40007, 40107)]
for port in port_list:
ds = ('', port)
server = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
server.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
server.bind(ds)
server.listen(1)
servers.append(server)
found,_,_ = select.select(servers, [], [])
found = found[0]
conn, addr = found.accept()
print 'Connected by', addr
data = conn.recv(1024)
print "received", data
conn.sendall("message!!")
100個のサーバーソケットを完全に削除するにはどうすればよいですか? (それがあなたが意味するものなら)。私は受け入れられた接続のためにconn.close()を1回行っています。 – Jobs
私はserver:server.close()のサーバーで試しましたが動作しません。 – Jobs
サーバソケットをループし、それらも '.close()'します。 –