Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #!/usr/bin/env python3.2
- import socket
- import threading
- import socketserver
- import argparse
- import math
- class ThreadedTCPRequestHandler(socketserver.BaseRequestHandler):
- def handle(self):
- try:
- n = int(self.request.recv(4096))
- result = []
- t = 2
- while t <= math.sqrt(n):
- while n % t == 0:
- n = int(n / t)
- result.append(t)
- t += 1
- if(n > 1):
- result.append(n)
- response = repr(result)
- self.request.send(bytes(response,"utf-8"))
- except:
- pass
- class ThreadedTCPServer(socketserver.ThreadingMixIn, socketserver.TCPServer):
- pass
- def client(host, port):
- n = int(input())
- sock = socket.create_connection((host, port))
- try:
- sock.send(bytes(str(n), "utf-8"))
- response = sock.recv(4096)
- print("Result: {}".format(str(response, "utf-8")))
- finally:
- sock.close()
- def server(host, port):
- server = ThreadedTCPServer((host, port), ThreadedTCPRequestHandler)
- server_thread = threading.Thread(target=server.serve_forever)
- server_thread.daemon = True
- server_thread.start()
- server_thread.join()
- if __name__ == "__main__":
- parser = argparse.ArgumentParser(description = "Socket demo")
- parser.add_argument("-m", "--mode", metavar = "MODE", default = "client",
- choices = ["client", "server"],
- help = "Operating mode: client or server, default is client")
- parser.add_argument("-ch", "--host", metavar = "HOST", default = "0.0.0.0",
- help = "Host name, is necessary for client")
- parser.add_argument("-p", "--port", metavar = "PORT", default = "8562",
- help = "Port, default is 8562")
- args = parser.parse_args()
- if args.mode == "client" and args.host == "0.0.0.0":
- parser.print_help()
- exit(0)
- if args.mode == "client":
- client(args.host, int(args.port))
- else:
- server(args.host, int(args.port))
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement