Python是一種廣泛應(yīng)用于編寫網(wǎng)絡(luò)應(yīng)用程序的編程語言。在網(wǎng)絡(luò)傳輸中,經(jīng)常需要進(jìn)行文件的傳輸。本文將介紹如何使用Python實(shí)現(xiàn)簡單的文件轉(zhuǎn)發(fā)功能。
import socket # 文件發(fā)送方 def sendfile(filename, ip, port): # 創(chuàng)建socket對象 s = socket.socket() # 連接服務(wù)器 s.connect((ip, port)) # 發(fā)送文件名 s.send(filename.encode()) # 等待服務(wù)器確認(rèn) data = s.recv(1024).decode() if data == 'OK': # 發(fā)送文件內(nèi)容 with open(filename, 'rb') as f: data = f.read() s.sendall(data) # 關(guān)閉socket連接 s.close() # 文件接收方 def recvfile(ip, port): # 創(chuàng)建socket對象 s = socket.socket() # 綁定本地IP和端口 s.bind((ip, port)) # 監(jiān)聽連接請求 s.listen(1) while True: # 等待連接 conn, addr = s.accept() print('Connected by', addr) # 接收文件名 filename = conn.recv(1024).decode() print('Recv filename:', filename) # 確認(rèn)接收文件 conn.send(b'OK') # 接收文件內(nèi)容 with open(filename, 'wb') as f: while True: data = conn.recv(1024) if not data: break f.write(data) # 關(guān)閉連接 conn.close() # 測試 if __name__ == '__main__': # 啟動文件接收方 recvfile('192.168.0.100', 8888) # 啟動文件發(fā)送方 sendfile('test.txt', '192.168.0.100', 8888)
上面是一個(gè)簡單的文件轉(zhuǎn)發(fā)示例,其中sendfile函數(shù)表示文件發(fā)送方,recvfile函數(shù)表示文件接收方。代碼中使用了Python內(nèi)置的socket庫來進(jìn)行網(wǎng)絡(luò)連接。在發(fā)送文件時(shí),首先連接服務(wù)器,然后發(fā)送文件名,并等待服務(wù)器確認(rèn)。如果收到確認(rèn)信息,則開始發(fā)送文件內(nèi)容,并關(guān)閉socket連接。在接收文件時(shí),首先綁定本地IP和端口,然后等待連接請求。一旦收到連接請求,接收文件名,并向?qū)Ψ桨l(fā)送確認(rèn)信息。之后,開始接收文件內(nèi)容,并寫入本地文件中。
上一篇vue bus 銷毀