1、客戶端準(zhǔn)備文件數(shù)據(jù)
2、客戶端與服務(wù)器建立連接
3、客戶端發(fā)送文件數(shù)據(jù)
4、服務(wù)器接收文件數(shù)據(jù)
5、服務(wù)器保存文件數(shù)據(jù)
下面是一個詳細(xì)的單元表格:
1.2 將文件數(shù)據(jù)轉(zhuǎn)換為字節(jié)流
2.2 發(fā)送連接請求到服務(wù)器
2.2 接受客戶端連接
以下是一個簡單的Python示例,展示了客戶端發(fā)送文件和服務(wù)器接收文件的過程:
客戶端代碼(send_file.py):
import socket def send_file(server_ip, server_port, file_path): # 讀取本地文件數(shù)據(jù) with open(file_path, 'rb') as f: file_data = f.read() # 與服務(wù)器建立連接 client_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM) client_socket.connect((server_ip, server_port)) # 發(fā)送文件數(shù)據(jù) client_socket.sendall(file_data) # 關(guān)閉連接 client_socket.close() if __name__ == '__main__': send_file('127.0.0.1', 12345, 'example.txt')
服務(wù)器端代碼(receive_file.py):
import socket def receive_file(server_ip, server_port, output_file_path): # 監(jiān)聽客戶端連接請求 server_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM) server_socket.bind((server_ip, server_port)) server_socket.listen(1) print("等待客戶端連接...") client_socket, client_address = server_socket.accept() print(f"客戶端 {client_address} 已連接") # 接收文件數(shù)據(jù) file_data = b'' while True: data = client_socket.recv(1024) if not data: break file_data += data # 保存文件數(shù)據(jù) with open(output_file_path, 'wb') as f: f.write(file_data) # 關(guān)閉連接 client_socket.close() server_socket.close() if __name__ == '__main__': receive_file('127.0.0.1', 12345, 'received_example.txt')
運(yùn)行上述代碼,客戶端將向服務(wù)器發(fā)送名為example.txt
的文件,服務(wù)器接收文件并將其保存為received_example.txt
。