Python Forum
UDP FTP server - Printable Version

+- Python Forum (https://python-forum.io)
+-- Forum: Python Coding (https://python-forum.io/forum-7.html)
+--- Forum: Networking (https://python-forum.io/forum-12.html)
+--- Thread: UDP FTP server (/thread-5927.html)



UDP FTP server - msDirecti0n - Oct-29-2017

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:

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



RE: UDP FTP server - HybridAK - Oct-29-2017

(Oct-29-2017, 04:59 AM)msDirecti0n Wrote: 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:

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

I'm sorry. I'm not sure.


RE: UDP FTP server - msDirecti0n - Oct-29-2017

Okay, I figured it out. I was sending it to the wrong IP address. I just changed this line in Receiver.py: receiverSocket.sendto(msg, address)

I hope that this was able to help anyone else who may encounter this problem in the future.