Skip to content
Snippets Groups Projects
Commit e1060bc0 authored by Allief Nuriman's avatar Allief Nuriman
Browse files

Minor changes in transmission & rreceiver

parent 0985b657
No related merge requests found
......@@ -4,6 +4,9 @@
# Unit testing
test.py
# test file
test*
# Byte-compiled / optimized / DLL files
__pycache__/
*.py[cod]
......
......@@ -97,6 +97,13 @@ while (not(fin)):
stage = "RECEIVE_DATA"
elif (stage == "RECEIVE_DATA"):
'''
Pemeriksaan apakah segmen yang diperoleh rusak atau tidak
Jika tidak rusak
Kirim acknowledgement kepada server
Jika rusak
abaikan
'''
data, address = s.recvfrom(32777)
r = receiver.Receiver()
......@@ -114,6 +121,8 @@ while (not(fin)):
if (seq_num0 == server_seq_num + n_data_received): #curr_ack_num masih sama karena sebelum ini, client belum menerima paket dengan payload
received_data = rec_packet.getPayLoad()
print("\nReceived data: "+received_data)
#print()
#print(hexa.byte(received_data,'utf-8'))
ack_packet = segment.Segment()
......
......@@ -20,4 +20,19 @@ class FileHandler:
file_ = file.File(filePath)
dumpRes = pickle.dumps(file_) # byte obj
fileHexString = hexa.hexstring(dumpRes) #str
return fileHexString
\ No newline at end of file
return fileHexString
def restoreFile(self,filePath : str,fileHexString : str) -> str:
'''
[DESC]
Method to restore a file class from a hexstring
[PARAMS]
filePath : str
fileHexString : str
[RETURNS]
str : filePath
'''
file_ = file.File(filePath)
file_ = pickle.loads(hexa.hextobyte(fileHexString))
file_.save()
return filePath
\ No newline at end of file
......@@ -29,16 +29,6 @@ Pseudocode:
6. Ulangi sampai pengguna menyelesaikan program server
'''
s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
if (len(sys.argv) > 1):
port = int(sys.argv[1])
print("Server started at port "+str(port)+"...")
else:
print("Port number not specified. Run: 'python server.py <port-number>'")
exit()
s.bind(('127.0.0.1',port))
def listen_broadcast():
print("Listening to broadcast address for clients.")
......@@ -135,8 +125,10 @@ def connect(client):
elif (stage == "SEND_FILE"):
print("\nSending file...")
tm = transmitter.Transmitter(server_seq_num + n_data_received)
tm.prepareSegment("./test.txt")
'''
Go-Back-N-ARQ starts here
'''
tm.prepareSegment("./test.mp4")
message = tm.transmitSegment(0)
s.sendto(message, (IP, port))
......@@ -145,7 +137,9 @@ def connect(client):
rec_packet.build(r.receiveSegment(data))
n_data_sent += len(tm.segmentQueue[0].getPayLoad())
'''
Go-Back-N-ARQ ends here
'''
stage = "FIN"
elif (stage == "FIN"):
......@@ -241,6 +235,22 @@ def connect(client):
print("\nConnection with client "+IP+":"+str(port)+" closed.")
clients = listen_broadcast()
# Main Program
s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
if (len(sys.argv) > 1):
port = int(sys.argv[1])
print("Server started at port "+str(port)+"...")
else:
print("Port number not specified. Run: 'python server.py <port-number>'")
exit()
send_and_connect(clients)
hostname = socket.gethostname()
print(hostname)
local_ip = socket.gethostbyname(hostname)
print(local_ip)
s.bind(('127.0.0.1',port))
clients = listen_broadcast()
send_and_connect(clients)
\ No newline at end of file
......@@ -34,6 +34,7 @@ class Transmitter:
s.loadPayLoad(fileHexString[i:i + segment.PAYLOAD_MAX_HEXLENGTH])
s.switchFlag("DATA")
self.segmentQueue.append(s)
print("SEG",)
counter += 1
def transmitSegment(self,index : int) -> bytes:
......
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment