【发布时间】:2012-03-08 23:08:20
【问题描述】:
我正在尝试在 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;
主要客户代码:
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 中出现问题,我得到一个 0kB 的文件
全部代码:
【问题讨论】:
标签: python sockets networking