from socket import *
import struct
file_name = "go.jpg"
sever_ip = "192.168.2.120"
send_data = struct.pack("!H%dsb5sb"%len(file_name), 1, file_name.encode(), 0, "ocete".encode(), 0)
s = socket(AF_INET,SOCK_DGRAM)
s.sendto(send_data,(sever_ip,69))
f = open(file_name,"ab")
while True:
recv_data = s.recvfrom(1024) #接收数据
caozuoma, ack_num = struct.unpack("!HH",recv_data[0][:4])
rand_port = recv_data[1][1]
if int(caozuoma)==5:
print("文件不存在")
break
print("操作码:{},ACK:{},服务器端口:{},数据长度{}".format(caozuoma,ack_num,rand_port,len(recv_data)))
老师您好,我确认文件在桌面,但是一直返回操作码5,是什么原因呢
具体打印recv_data如下:
(b'\x00\x05\x00\x04Illegal TFTP operation\x00', ('192.168.2.120', 50869))
文件不存在