Python Forum
Thread Rating:
  • 0 Vote(s) - 0 Average
  • 1
  • 2
  • 3
  • 4
  • 5
UDP FTP server
#1
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
Reply
#2
(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.
Reply
#3
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.
Reply


Possibly Related Threads…
Thread Author Replies Views Last Post
  Paramiko Server -- Exception (server): Error reading SSH protocol banner ujlain 3 4,557 Jul-24-2023, 06:52 AM
Last Post: Gribouillis

Forum Jump:

User Panel Messages

Announcements
Announcement #1 8/1/2020
Announcement #2 8/2/2020
Announcement #3 8/6/2020