#coding=utf-8
from socket import *
import struct
filename = "nene.jpg"
server_ip = "192.168.145.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 int(caozuoma) ==5:#如果操作码是5
print("文件不存在...")
break#跳出循环
#print("操作码: %d,ACK: %d,服务器随机端口: %d"%(caozuoma, ack_num, rand_port, len(recv_data[0][4])))
f.write(recv_data[0][4:])#将数据写入
if len(recv_data[0]) < 516:
break#如果该数据包接受的长度小于516 跳出循环
ack_data = struct.pack("!HH", 4, ack_num)#发确认包
s.sendto(ack_data, (server_ip, rand_port))#回复ACK确认包
我导入socket模块了
"C:\Program Files\Python37\python.exe" D:/Users/MM/PycharmProjects/gui/socket/完整版下载器.py
Traceback (most recent call last):
File "D:/Users/MM/PycharmProjects/gui/socket/完整版下载器.py", line 7, in <module>
s = socket(AF_INET, SOCK_DGRAM)
NameError: name 'socket' is not defined
Process finished with exit code 1