Oct-29-2017, 04:59 AM
This is an assignment where I have to create a basic FTP server using UDP and also implement some reliable data transfer.
Below is some code that I have so far. I need help in regards to sending and receiving. I can successfully send from my sender code and successfully receive from my receiver code. When I try to send from my receiver (ACK) the sender gets stuck. Any thoughts on how to fix this?
Sender.py:
Below is some code that I have so far. I need help in regards to sending and receiving. I can successfully send from my sender code and successfully receive from my receiver code. When I try to send from my receiver (ACK) the sender gets stuck. Any thoughts on how to fix this?
Sender.py:
from socket import * from Message import * #from Receiver import * import pickle import sys senderIP = '127.0.0.1' senderPort = 5001 senderSocket = socket(AF_INET, SOCK_DGRAM) senderSocket.setblocking(1) filename = 'words.txt' f = open(filename, 'r') m = Message("start", 0, "", 0) m.data = f.read(20) print('\n', m.data) rm = pickle.dumps(m) senderSocket.sendto(rm, (senderIP, senderPort)) f.close() msg, addr = senderSocket.recvfrom(1500) rm = pickle.loads(msg) print(rm.data)Receiver.py:
from socket import * from Message import * #from Sender import * import pickle import sys receiverName = '127.0.0.1' receiverPort = 5001 receiverSocket = socket(AF_INET, SOCK_DGRAM) receiverSocket.bind(('', receiverPort)) receiverSocket.setblocking(1) filename = 'words.txt' f = open('new ' + filename, 'w') print("Ready to receive.....") msg, address = receiverSocket.recvfrom(1500) rm = pickle.loads(msg) print(rm.data) print(len(rm.data)) print(rm.create_ack(len(rm.data))) print(rm.seqNum) print(rm.mType) msg = pickle.dumps(rm.mType) receiverSocket.sendto(msg, (receiverName, receiverPort))Message.py:
import sys class Message(): def __init__(self): """""""" def __init__(self, mType, seqNum, data, checksum): self.mType = mType self.seqNum = seqNum self.data = data self.checksum = checksum def create_ack(self, ldata): self.data = "" self.seqNum = self.seqNum + ldata self.mType = "ack" self.checksum = 0