#老师,您好,这个错误该怎么解决?
import struct
from socket import *
filename = 'dog.jpg'
server_ip = '192.168.94.1'
#将发送请求相关的数据打包
send_data = struct.pack('!H%dsb5sb' % len(filename), 1, filename.encode(),0,'octet'.encode(),0)
s = socket(AF_INET, SOCK_DGRAM)
s.sendto(send_data, (server_ip, 69))
f = open(filename, '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 caozuoma == 5:
print('文件不存在。。。')
break
print('操作码:%d, ACK: %d, 服务器随机端口:%d, 数据长度:%d' %(caozuoma, rand_port, len(recv_data[0])))
f.write(recv_data[0][4:])#将数据写入
if len(recv_data[0]) < 516:
break
ack_num = struct.pack('!HH', 4, ack_num) #将确认的相关数据打包;确认包的操作码为4
s.sendto(ack_num,(server_ip,rand_port)) #向服务器回复ACK确认包
