import struct
from socket import *
filename = "DJTT.jpg"
server_ip = '192.168.1.9'
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') # a 以追加模式打开(必要时可以创建)b:二进制
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('操作码:%d,ACK:%d,服务器端口:%d,数据长度:%d,'%((caozuoma),ack_num,rand_port,len(recv_data[0])))
#接受一点就写入一点带文件内
f.write(recv_data[0][4:]) #数据的第一部分中再去掉操作码和块编号的4个字节 则内容为[4:]
if len(recv_data)<516:
break
#发送确认包给服务器告知接受成功
ack_data = struct.pack("!HH",4,ack_num) # !HH 格式占用4个字节,操作码为4 确认包 ,块编号
#回复ACK确认包
s.sendto(ack_data,(server_ip,rand_port))

老师 这是什么情况 我用 课件的源码运行也是报这样的错,有空帮我看看谢谢
.