利用socket进行局域网收发文件
首先在刷好linux的随身wifi准备创建接受端
注意发送接受双方编码一致
file_name = conn.recv(1024).decode('utf-8')
import socket # 定义要绑定的IP地址和端口号 HOST = '' PORT = 8888 # 创建socket对象并绑定到指定IP地址和端口号 s = socket.socket() s.bind((HOST, PORT)) # 监听端口 s.listen(1) # 等待连接 conn, addr = s.accept() print('Connected by', addr) # 接收文件名 file_name = conn.recv(1024).decode()
name=file_name[:file_name.find(".")]
if not os.path.exists(name):
open(name+".py", 'a').close()
with open(name+".py", 'wb') as f:
while True:
data = conn.recv(1024)
if not data:
break
f.write(data)
# 接收文件数据 with open(file_name, 'wb') as f: while True: data = conn.recv(1024) if not data: break f.write(data) # 关闭连接 conn.close()
、
执行就会阻塞等待,这时候服务器就会监听8888端口,并接收通过该端口发送来的文件,可以看到8888端口已经处于监听状态
客户端
import socket def transfer_file(file_path, host, port): # 创建socket对象并连接到指定主机和端口 s = socket.socket() s.connect((host, port)) # 发送文件名 file_name = file_path.split("/")[-1].encode('utf-8') s.send(file_name) # 发送文件数据 with open(file_path, "rb") as f: while True: data = f.read(1024) if not data: break s.send(data) # 关闭socket连接 s.close() if __name__ == "__main__": # 定义目标主机和端口号 target_host = "192.168.0.118" target_port = 8888 # 定义要传输的文件路径 file_path = "../serv.py" # 发送文件 transfer_file(file_path, target_host, target_port)
可以看到已经成功接收到文件