import socketdef main(): # 建立套接字 tcp_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM) # 獲取服務器的ip port dest_addr = input("請輸入服務器的ip:") dest_port = int(input("請輸入服務器的port:")) # 連接服務器 tcp_socket.connect((dest_addr, dest_port)) # 獲取下載的文件名字 file = input("請輸入須要下載的文件名:") # 將文件名字發送到服務器 tcp_socket.send(file.encode("gbk")) # 接收文件中的數據 recv_data = tcp_socket.recv(1024) # 保存接收到的數據到一個文件中 if recv_data: with open("復件" + file, "wb") as f: f.write(recv_data) # 關閉套接字 tcp_socket.close() if __name__ == "__main__": main()
import socket def send_file_2_client(client_socket, client_addr): # 1 接收須要下載的文件名 # 接收客戶端發送來的請求,接收客戶端發過來的文件名 file_name = client_socket.recv(1024) print("客戶端%s發過來的文件名:%s" % (str(client_addr), file_name.decode("gbk"))) file_content = None # 2 打開文件,讀取數據 try: f = open(file_name.decode("gbk"), "rb") file_content = f.read() f.close() except Exception as ret: print("沒有要下載的文件%s" % ret) # 3 發送文件的數據給客戶端 if file_content: # 回送一部分數據給客戶端 client_socket.send(file_content) def main(): # 買個手機-建立tcp套接字 tcp_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM) # 插入手機卡-綁定 tcp_socket.bind(("", 7890)) # 將手機設置爲正常的響鈴模式(讓默認的套接字由主動變爲被動listen) tcp_socket.listen(128) while True: # 等待別人的電話到來(等待客戶端的連接 accept) client_socket, client_addr = tcp_socket.accept() # print(client_socket) print(client_addr) send_file_2_client(client_socket, client_addr) # 關閉套接字 client_socket.close() tcp_socket.close() if __name__ == "__main__": main()