2016-05-30 14:17:04 +03:00
|
|
|
import socketserver, subprocess, sys
|
|
|
|
from threading import Thread
|
|
|
|
from pprint import pprint
|
|
|
|
import json
|
|
|
|
|
|
|
|
my_unix_command = ['bc']
|
|
|
|
HOST = 'localhost'
|
|
|
|
PORT = 2000
|
|
|
|
|
|
|
|
class SingleTCPHandler(socketserver.StreamRequestHandler):
|
|
|
|
|
|
|
|
def handle(self):
|
|
|
|
# self.rfile is a file-like object created by the handler;
|
|
|
|
# we can now use e.g. readline() instead of raw recv() calls
|
|
|
|
self.data = self.rfile.readline().strip()
|
|
|
|
print("{} wrote:".format(self.client_address[0]))
|
|
|
|
print(self.data)
|
|
|
|
# Likewise, self.wfile is a file-like object used to write back
|
|
|
|
# to the client
|
|
|
|
self.wfile.write(self.data.upper())
|
|
|
|
|
|
|
|
|
|
|
|
class SimpleServer(socketserver.ThreadingMixIn, socketserver.TCPServer):
|
|
|
|
# Ctrl-C will cleanly kill all spawned threads
|
|
|
|
daemon_threads = True
|
|
|
|
# much faster rebinding
|
|
|
|
allow_reuse_address = True
|
|
|
|
|
|
|
|
def __init__(self, server_address, RequestHandlerClass):
|
|
|
|
socketserver.TCPServer.__init__(self, server_address, RequestHandlerClass)
|
|
|
|
|
|
|
|
if __name__ == "__main__":
|
|
|
|
server = SimpleServer((HOST, PORT), SingleTCPHandler)
|
|
|
|
# terminate with Ctrl-C
|
|
|
|
try:
|
|
|
|
server.serve_forever()
|
|
|
|
except KeyboardInterrupt:
|
|
|
|
sys.exit(0)
|