-
Notifications
You must be signed in to change notification settings - Fork 0
/
file_receiver.py
41 lines (36 loc) · 1008 Bytes
/
file_receiver.py
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
# Usage: python file_receiver.py [dummy|ss|gbn] [file_name]
import config
import functools
import os.path
import sys
import time
import util
def msg_handler(file_handle, msg):
print("Received MSG of length" + str(len(msg)))
file_handle.write(msg)
if __name__ == '__main__':
if len(sys.argv) != 3:
print('Usage: python file_receiver.py [dummy|ss|gbn] [file_name]')
sys.exit(1)
transport_layer = None
transport_layer_name = sys.argv[1]
file_name = sys.argv[2]
# assert os.path.exists(file_name)
file_handle = None
try:
file_handle = open(file_name, 'wb')
transport_layer = util.get_transport_layer_by_name(
transport_layer_name,
config.RECEIVER_LISTEN_PORT,
config.SENDER_LISTEN_PORT,
functools.partial(msg_handler, file_handle))
while True:
time.sleep(1)
except KeyboardInterrupt:
print('bye...')
exit()
finally:
if file_handle:
file_handle.close()
if transport_layer:
transport_layer.shutdown()