Advertisement
Guest User

server.py

a guest
Nov 15th, 2019
142
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 1.83 KB | None | 0 0
  1. import pickle
  2. import socket
  3. from _thread import start_new_thread
  4.  
  5.  
  6. def log_it(msg):
  7.     global log
  8.     print(msg)
  9.     log.append(msg)
  10.  
  11.  
  12. def generate_reply(msg, conn):
  13.     if msg == hash("file start"):
  14.         attribs = pickle.loads(conn.recv(2048))
  15.         blocks = list()
  16.         for n in range(0, attribs["blocks"]):
  17.             blocks.append(pickle.loads(conn.recv(2048)))
  18.  
  19.         file = ''.join(blocks)
  20.         try:
  21.             if attribs["encoding"] is not None:
  22.                 with open(attribs["name"], 'w' + 'b' if attribs["binary"] else '', encoding=attribs["encoding"]) as f:
  23.                     f.write(file)
  24.             else:
  25.                 with open(attribs["name"], 'w' + 'b' if attribs["binary"] else '') as f:
  26.                     f.write(file)
  27.         except:
  28.             return 0
  29.         return 1
  30.  
  31.  
  32. def threaded_client(conn: socket.socket):
  33.     conn.send(str.encode("Connected"))
  34.     reply = ""
  35.     while True:
  36.         try:
  37.             data = pickle.loads(conn.recv(2048))
  38.  
  39.             if not data:
  40.                 log_it("Disconnected")
  41.                 break
  42.             else:
  43.                 reply = generate_reply(data, conn)
  44.                 log_it("Received: " + data)
  45.                 log_it("Sending: " + reply)
  46.  
  47.             conn.sendall(pickle.dumps(reply, protocol=4))
  48.         except Exception as e:
  49.             raise
  50.  
  51.     log_it("Lost connection")
  52.     conn.close()
  53.  
  54.  
  55. server = "192.168.0.12"
  56. # server = ""
  57. port = 5555
  58. s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
  59.  
  60. log = list()
  61.  
  62. try:
  63.     s.bind((server, port))
  64. except socket.error as e:
  65.     log_it(e)
  66.  
  67. s.listen()
  68. log_it("Server boot successful.")
  69.  
  70. if __name__ == "__main__":
  71.     while True:
  72.         conn, addr = s.accept()
  73.         log_it("Connected to: " + str(addr))
  74.  
  75.         start_new_thread(threaded_client, (conn,))
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement