@@ -42,16 +42,20 @@ def __init__(self, host="0.0.0.0", port=80):
42
42
self ._on_request_handler = None
43
43
self ._on_not_found_handler = None
44
44
self ._on_error_handler = None
45
+ self ._sock = None
45
46
46
47
def start (self ):
47
48
""" Start server """
48
- sock = socket .socket (socket .AF_INET , socket .SOCK_STREAM )
49
- sock .setsockopt (socket .SOL_SOCKET , socket .SO_REUSEADDR , 1 )
50
- sock .bind ((self ._host , self ._port ))
51
- sock .listen (1 )
49
+ self ._sock = socket .socket (socket .AF_INET , socket .SOCK_STREAM )
50
+ self ._sock .setsockopt (socket .SOL_SOCKET , socket .SO_REUSEADDR , 1 )
51
+ self ._sock .bind ((self ._host , self ._port ))
52
+ self ._sock .listen (1 )
53
+ print ("Server start" )
52
54
while True :
55
+ if self ._sock is None :
56
+ break
53
57
try :
54
- self ._connect , address = sock .accept ()
58
+ self ._connect , address = self . _sock .accept ()
55
59
request = self .get_request ()
56
60
if len (request ) == 0 :
57
61
self ._connect .close ()
@@ -69,6 +73,13 @@ def start(self):
69
73
finally :
70
74
self ._connect .close ()
71
75
76
+ def stop (self ):
77
+ """ Stop the server """
78
+ self ._connect .close ()
79
+ self ._sock .close ()
80
+ self ._sock = None
81
+ print ("Server stop" )
82
+
72
83
def add_route (self , path , handler , method = "GET" ):
73
84
""" Add new route """
74
85
self ._routes .append (
@@ -140,3 +151,4 @@ def _internal_error(self, error):
140
151
self .send ("Error: " + str_error )
141
152
print (str_error )
142
153
154
+
0 commit comments