forked from loggerhead/shadowsocks-rust
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathecho_server.py
More file actions
36 lines (29 loc) · 1.04 KB
/
echo_server.py
File metadata and controls
36 lines (29 loc) · 1.04 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
#!/usr/bin/python
import SocketServer
from threading import Thread
from config_tests import SERVER_PORT, BUF_SIZE, p
class TcpEchoHandler(SocketServer.BaseRequestHandler):
def handle(self):
while True:
data = self.request.recv(BUF_SIZE)
if len(data) == 0:
break
self.request.sendall(data)
class UdpEchoHandler(SocketServer.BaseRequestHandler):
def handle(self):
data = self.request[0]
conn = self.request[1]
conn.sendto(data, self.client_address)
class ThreadedTCPServer(SocketServer.ThreadingMixIn, SocketServer.TCPServer):
pass
class ThreadedUDPServer(SocketServer.ThreadingMixIn, SocketServer.UDPServer):
pass
def start_tcp_server():
s = ThreadedTCPServer(("127.0.0.1", SERVER_PORT), TcpEchoHandler)
s.serve_forever()
def start_udp_server():
s = ThreadedUDPServer(("127.0.0.1", SERVER_PORT), UdpEchoHandler)
s.serve_forever()
if __name__ == '__main__':
Thread(target=start_tcp_server).start()
Thread(target=start_udp_server).start()