polish up
This commit is contained in:
@@ -16,6 +16,7 @@
|
|||||||
##
|
##
|
||||||
###############################################################################
|
###############################################################################
|
||||||
|
|
||||||
|
import sys
|
||||||
import os
|
import os
|
||||||
import socket
|
import socket
|
||||||
|
|
||||||
@@ -25,10 +26,32 @@ from autobahn.twisted.websocket import WebSocketServerProtocol, \
|
|||||||
|
|
||||||
|
|
||||||
class CustomPort(tcp.Port):
|
class CustomPort(tcp.Port):
|
||||||
|
|
||||||
|
def __init__(self, port, factory, backlog = 50, interface = '', reactor = None, reuse = False):
|
||||||
|
tcp.Port.__init__(self, port, factory, backlog, interface, reactor)
|
||||||
|
self._reuse = reuse
|
||||||
|
|
||||||
|
|
||||||
def createInternetSocket(self):
|
def createInternetSocket(self):
|
||||||
s = tcp.Port.createInternetSocket(self)
|
s = tcp.Port.createInternetSocket(self)
|
||||||
s.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
|
|
||||||
#s.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEPORT, 1)
|
if self._reuse:
|
||||||
|
##
|
||||||
|
## reuse IP Port
|
||||||
|
##
|
||||||
|
if 'bsd' in sys.platform or \
|
||||||
|
sys.platform.startswith('linux') or \
|
||||||
|
sys.platform.startswith('darwin'):
|
||||||
|
s.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
|
||||||
|
s.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEPORT, 1)
|
||||||
|
|
||||||
|
elif sys.platform == 'win32':
|
||||||
|
## on Windows, REUSEADDR already implies REUSEPORT
|
||||||
|
s.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
|
||||||
|
|
||||||
|
else:
|
||||||
|
raise Exception("don't know how to set SO_RESUSEPORT on platform {}".format(sys.platform))
|
||||||
|
|
||||||
return s
|
return s
|
||||||
|
|
||||||
|
|
||||||
@@ -68,7 +91,7 @@ if __name__ == '__main__':
|
|||||||
|
|
||||||
#reactor.listenTCP(9000, factory)
|
#reactor.listenTCP(9000, factory)
|
||||||
|
|
||||||
p = CustomPort(9000, factory)
|
p = CustomPort(9000, factory, reuse = True)
|
||||||
p.startListening()
|
p.startListening()
|
||||||
print p
|
print p
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user