老师,我想请问为什么同样的结构,文件名为英文名就可以成功,文件名为中文名就会报错:
代码:
from socket import *
import struct
fileName = '焰灵姬.jpg'
adrr = '192.168.0.107'
cmb_buf = struct.pack('!H%dsb5sb'%len(fileName),1,fileName.encode('gbk'),0,'octet'.encode('gbk'),0)
s = socket(AF_INET,SOCK_DGRAM)
s.sendto(cmb_buf,(adrr,69))
f = open(fileName,'ab')
while True:
recvdata = s.recvfrom(1024)
caozuoma,ack_number = struct.unpack('!HH',recvdata[0][:4])
rand_port = recvdata[1][1]
if int(caozuoma) == 5:
print('文件出错')
break
f.write(recvdata[0][4:])
if len(recvdata[0]) < 516:
print('文件传输完毕')
break
ack_data = struct.pack('!HH',4,ack_number)
s.sendto(ack_data,(adrr,rand_port))
