Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import socket
- import sys
- import threading
- class Server:
- def __init__(self, host, port):
- self.host = host
- self.port = port
- def run(self):
- with socket.socket(socket.AF_INET, socket.SOCK_STREAM) as s:
- s.bind((self.host, self.port))
- s.listen()
- while True:
- conn, addr = s.accept()
- t = threading.Thread(None, Server.process_connection, "conn-"+str(addr), (conn, addr))
- t.start()
- @staticmethod
- def process_connection(connection, address):
- BUFFER_SIZE = 1024
- with connection:
- print('Connected to', address)
- name_len = int.from_bytes(Server._read(connection, 4), 'little')
- name = str(Server._read(connection, name_len), 'utf-8')
- print('Receiving ' + name)
- while True:
- data = connection.recv(BUFFER_SIZE)
- if not data:
- break
- with open('storage/' + name, 'ab') as f:
- f.write(data)
- print("Received " + name)
- @staticmethod
- def _read(conn, num):
- data = conn.recv(num)
- if not data:
- raise Exception("Read operation failed")
- return data
- if __name__ == "__main__":
- HOST = sys.argv[1] if len(sys.argv) > 1 else '' # any
- PORT = sys.argv[2] if len(sys.argv) > 2 else 65432
- s = Server(HOST, PORT)
- s.run()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement