-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathserver.py
More file actions
53 lines (36 loc) · 1.23 KB
/
server.py
File metadata and controls
53 lines (36 loc) · 1.23 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
import socket
import pickle
from huffman import Decompressor
def decompress(compressed_data, code_dict):
DecompressorObject = Decompressor(compressed_data, code_dict)
decompressed_data = DecompressorObject.decompressor()
return decompressed_data
def recvall(socket):
BUFF_SIZE = 4096
fragments = b''
while True:
chunk = socket.recv(BUFF_SIZE)
if not chunk:
break
fragments += chunk
return fragments
def convert(list):
return ''.join(list)
if __name__ == "__main__":
host = "127.0.0.1"
port = 9998
server_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
server_socket.bind((host, port))
server_socket.listen(5)
print("Server running...")
client_socket, addr = server_socket.accept()
print("Got a connection from %s" % str(addr))
print("\nReceiving compressed data and encoding...", end=" ")
recv_data = pickle.loads(recvall(client_socket))
print("done!")
client_socket.close()
uncompressed_data = convert(decompress(recv_data[0], recv_data[1]))
filename = str(input("\nEnter output file: "))
with open(filename, 'w') as file:
file.write(uncompressed_data)
print("Successfully wrote data to file!")