Advertisement
Guest User

server

a guest
Feb 9th, 2012
176
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 2.10 KB | None | 0 0
  1. #!/usr/bin/env python3.2
  2. import socket
  3. import threading
  4. import socketserver
  5. import argparse
  6. import math
  7. class ThreadedTCPRequestHandler(socketserver.BaseRequestHandler):
  8.     def handle(self):
  9.         try:
  10.             n = int(self.request.recv(4096))
  11.             result = []
  12.             t = 2
  13.             while t <= math.sqrt(n):
  14.                 while n % t == 0:
  15.                     n = int(n / t)
  16.                     result.append(t)
  17.                 t += 1
  18.             if(n > 1):
  19.                 result.append(n)
  20.             response = repr(result)
  21.             self.request.send(bytes(response,"utf-8"))
  22.         except:
  23.             pass
  24.  
  25. class ThreadedTCPServer(socketserver.ThreadingMixIn, socketserver.TCPServer):
  26.     pass
  27. def client(host, port):
  28.     n = int(input())
  29.     sock = socket.create_connection((host, port))
  30.     try:
  31.         sock.send(bytes(str(n), "utf-8"))
  32.         response = sock.recv(4096)
  33.         print("Result: {}".format(str(response, "utf-8")))
  34.     finally:
  35.         sock.close()
  36. def server(host, port):
  37.     server = ThreadedTCPServer((host, port), ThreadedTCPRequestHandler)
  38.     server_thread = threading.Thread(target=server.serve_forever)
  39.     server_thread.daemon = True
  40.     server_thread.start()
  41.     server_thread.join()
  42. if __name__ == "__main__":
  43.     parser = argparse.ArgumentParser(description = "Socket demo")
  44.     parser.add_argument("-m", "--mode", metavar = "MODE", default = "client",
  45.                         choices = ["client", "server"],
  46.                         help = "Operating mode: client or server, default is client")
  47.     parser.add_argument("-ch", "--host", metavar = "HOST", default = "0.0.0.0",
  48.                         help = "Host name, is necessary for client")
  49.     parser.add_argument("-p", "--port", metavar = "PORT", default = "8562",
  50.                         help = "Port, default is 8562")
  51.     args = parser.parse_args()
  52.     if args.mode == "client" and args.host == "0.0.0.0":
  53.         parser.print_help()
  54.         exit(0)
  55.     if args.mode == "client":
  56.         client(args.host, int(args.port))
  57.     else:
  58.         server(args.host, int(args.port))
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement