Я пытаюсь реализовать RFC1350 поверх UDP. Пока что все прошло гладко, отправив файл
от сервера к клиенту работал как чудо, я дал метод для получения данных на сервер и отправки данных клиенту, но это направление не идет.
Код сервера ключей:
def listen(self):
while True:
packet, address = self.serverSocket.recvfrom(512)
mode = str(packet)[2:5]
self.file = str(str(packet)[6:]).replace("'", "")
if(mode == "RRQ"):
self.sendResponse(address)
else:
self.receiveData()
def receiveData(self):
data = open("new1.jpg", "wb")
while True:
packet, server = self.serverSocket.recvfrom(512)
if packet.__len__() == 512:
data.write(packet)
else:
data.write(packet)
break;
Код ключа клиента:
def sendWRQ(self):
request = 'WRQ-' + self.file
self.clientSocket.sendto(str(request).encode(), (self.serverAddress, self.serverPort))
self.sendData()
def sendData(self):
with open(self.file, "rb") as data:
while True:
packet = data.read(512)
if packet != b"":
self.clientSocket.sendto(packet, (self.serverAddress, self.serverPort))
else:
self.clientSocket.sendto(packet, (self.serverAddress, self.serverPort))
break
time.sleep(0.0005)
- Клиент отправляет пакет WRQ с именем файла, который будет ключом передачи
- Реког сервера. тип передачи RRQ или WRQ в этом случае и начинает прослушивание
передача через receiveData ().
Клиент завершает работу после отправки sendWRQ (), теперь возникает проблема на сервере или на стороне клиента в sendData или receiveData. Я получаю файл размером 0 КБ
Весь код: