2
2
import logging
3
3
import threading
4
4
import asyncio
5
+ import sys
5
6
6
7
"""
7
8
Connect to this server using netcat or similar utilities
@@ -38,7 +39,11 @@ async def server_handler(reader, writer):
38
39
while True :
39
40
writer .write (">> " .encode ())
40
41
await writer .drain ()
41
- data = await reader .read (1024 )
42
+ try :
43
+ data = await reader .read (1024 )
44
+ except ConnectionResetError :
45
+ logging .error (f"Closed connection - Reset Connection Error: { addr } " )
46
+ break
42
47
cmd = data .decode ().strip ()
43
48
44
49
logging .info (f"Received { cmd } from { addr } " )
@@ -57,25 +62,25 @@ async def server_handler(reader, writer):
57
62
58
63
async def main ():
59
64
global HOST , PORT
60
- logging . basicConfig ( level = logging . DEBUG , format = "%(threadName)s --> %(asctime)s - %(levelname)s: %(message)s" ,
61
- datefmt = "%H:%M:%S" )
62
- parser = argparse . ArgumentParser ()
63
- parser . add_argument ( "-a" , "--address" , help = "host address" , default = HOST , type = str , dest = "address" )
64
- parser . add_argument ( "-p" , "--port" , help = "port number" , default = PORT , type = int , dest = "port" )
65
- args = parser . parse_args ()
66
- PORT = args . port
67
- HOST = args . address
65
+ try :
66
+ HOST = sys . argv [ 1 ]
67
+ except :
68
+ pass
69
+ try :
70
+ PORT = sys . argv [ 2 ]
71
+ except :
72
+ pass
68
73
69
74
logging .info (f"Server running on { HOST } :{ PORT } ..." )
70
75
71
76
server = await asyncio .start_server (server_handler , HOST , PORT )
72
77
73
- try :
74
- async with server :
75
- await server .serve_forever ()
76
- except KeyboardInterrupt :
77
- logging .warning ("Server stopping..." )
78
+ async with server :
79
+ await server .serve_forever ()
78
80
79
81
80
82
if __name__ == "__main__" :
81
- asyncio .run (main ())
83
+ try :
84
+ asyncio .run (main ())
85
+ except KeyboardInterrupt :
86
+ logging .warning ("Server stopping..." )
0 commit comments