from socket import *
import struct
if __name__ == '__main__':
ftp_socket = socket(AF_INET, SOCK_DGRAM)
send_data = struct.pack('!H8sb5sb', 1, b'123.jpeg', 0, b'octet', 0)
ftp_ip = '192.168.1.7'
ftp_socket.sendto(send_data, (ftp_ip,69))
with open('/Users/zhangjiabing/Desktop/111/123.jpeg', "wb") as f:
while True:
receive_data = ftp_socket.recvfrom(1024)
print(receive_data)
operation_code,ack_num=struct.unpack('!HH',receive_data[0][:4])
rand_port=receive_data[1][1]
print(operation_code,ack_num)
if operation_code==5:
print('文件不存在')
break
else:
f.write(receive_data[0][4:])
print(receive_data[0],len(receive_data[0]))
if len(receive_data[0])<516:
print('文件传输完成')
break
ack_data=struct.pack('!HH',4,ack_num)
ftp_socket.sendto(ack_data,(ftp_ip,rand_port))
老师,您好:
这个作业,老师的点评是:
老师点评:
不要把代码都写在程序入口下面,失去了if
__name__
=
=
'__main__'
:
存在的意义,注意规划代码结构
请教下老师,这个代码,如何规划才更合理。哪些应该放在
if __name__ == '__main__':
之外?谢谢