我尝试在UDP上实现RFC1350。到目前为止,发送文件都很顺利 从一个服务器到另一个客户端的工作就像一个符咒,我给出了接收数据到服务器和发送数据到客户端的方法,但这个方向是不可能的。在
密钥服务器代码:
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;
关键客户代码:
^{pr2}$客户端在发送sendWRQ()后终止现在在sendData或receiveData的服务器或客户端出现问题我得到一个有0kB的文件
所有代码:
客户端通知服务器文件已完成的方法不正确。在
在您的代码中,当文件完成时,在客户端,您将调用“sendto”来发送一个空字符串,但这实际上不会起任何作用;在服务器端,您使用条件“packet.len()==512”来判断文件是否已完成,但是,在传输过程中,如果服务器cpu的运行速度比传输速度,你会经常得到零包长度,但这并不表示传输完成,也许下一个包就在路上。在
我的建议是使用一个特殊的命令来指示传输的结束,服务器只有在收到该命令时才会中断循环。在
相关问题 更多 >
编程相关推荐