python实现客户端从服务器下载简单文件

mac2026-08-13  4

客户端:

from socket import * # 创建socket tcp_client_socket = socket(AF_INET, SOCK_STREAM) # 目的信息 #server_ip = input("请输入服务器ip:") #server_port = int(input("请输入服务器port:")) #if "" in server_ip: # server_ip = "127.0.0.1" # 链接服务器 tcp_client_socket.connect(("127.0.0.1", 7788)) while True: # 提示用户输入数据 send_data = input("请输入要下载的的文件名:") tcp_client_socket.send(send_data.encode("utf-8")) # 接收对方发送过来的数据,最大接收1024个字节 recvData = tcp_client_socket.recv(1024) with open(send_data.encode("utf-8"), "wb") as f: f.write(recvData) # 关闭套接字 tcp_client_socket.close()

服务器:

from socket import * def select_file(fileName): # 发送一些数据到客户端 with open(fileName, "r",encoding='utf-8') as f: #读取出来的是列表形式 data = f.readlines() s = "" for item in data: s = s + str(item) return s.encode("utf-8") # 创建socket tcp_server_socket = socket(AF_INET, SOCK_STREAM) # 本地信息 address = ('', 7788) # 绑定 tcp_server_socket.bind(address) # 使用socket创建的套接字默认的属性是主动的,使用listen将其变为被动的,这样就可以接收别人的链接了 tcp_server_socket.listen(128) # 如果有新的客户端来链接服务器,那么就产生一个新的套接字专门为这个客户端服务 # client_socket用来为这个客户端服务 # tcp_server_socket就可以省下来专门等待其他新客户端的链接 client_socket, clientAddr = tcp_server_socket.accept() while True: # 接收对方发送过来的数据 recv_data = client_socket.recv(1024) # 接收1024个字节 print('请求的文件名为:', recv_data.decode('utf-8')) if recv_data.decode('utf-8') == "quit": # 关闭为这个客户端服务的套接字,只要关闭了,就意味着不能再为这个客户端服务了,如果还需要服务,只能再次重新连接 client_socket.close() break client_socket.send(select_file(recv_data.decode('utf-8')))

 

最新回复(0)