Python使用socket_TCP實現小檔案下載
伺服器
import socket
# 1.建立套接字
server = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
# 2.繫結埠
server.bind(('127.0.0.1', 7890))
# 3.變為被動監聽模式
server.listen(4)
while True:
# 4.等待客戶端連結
s_new, addr = server.accept()
print('使用者【{}】已經成功連線!!'.format(addr[0]))
while True:
# 5.接受訊息
try:
# 若客戶端強行斷開連線伺服器不會崩潰
recv_data = s_new.recv(1024).decode('utf-8')
if recv_data:
print('來自【{}】的使用者表示要下載: 【{}】'.format(addr[0], recv_data))
# 6.傳送訊息
try:
f = open(recv_data, 'rb')
content = f.read()
send_data = s_new.send(content)
f.close()
print('下載成功!')
except Exception as result:
send_data = s_new.send('Non'.encode('utf-8'))
print('未找到要下載的檔案')
else:
print('使用者已經正常退出!')
break
except Exception as res:
print('使用者已經退出連線!')
break
s_new.close()
# 7,關閉套接字
server.close()
客戶端
import socket
# 建立套接字
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
# 繫結IP地址
s.connect(('127.0.0.1', 7890))
while True:
# 傳送資料
send_data = str(input('請輸入想要下載的檔名:'))
if send_data == 'exit':
print('已退出下載!')
break
s.send(send_data.encode('utf-8'))
# 接收資料
recv_data = s.recv(2048)
if recv_data == 'Non'.encode('utf-8'):
print('未找到要下載的檔案!')
else:
with open('【new】' + send_data, 'wb') as f:
f.write(recv_data)
print('[{}]下載成功!'.format(send_data))
f.close()
# 關閉套接字
s.close()
執行結果(伺服器):
執行結果(客戶端):
檔案結果;
相關文章
- 使用Servlet實現檔案下載Servlet
- Flutter實現檔案下載Flutter
- AJAX實現檔案下載----
- Flutter 實現檔案下載功能Flutter
- Java實現檔案下載功能Java
- Weex 實現檔案的下載
- servlet實現檔案下載demoServlet
- Django 實現下載檔案功能Django
- 利用IhttpHandler實現檔案下載HTTP
- js實現使用檔案流下載csv檔案JS
- js下載檔案的實現方式JS
- js實現txt/excel檔案下載JSExcel
- Java程式碼實現下載檔案Java
- vc實現https檔案下載HTTP
- React中使用fetch實現檔案上傳下載React
- vue/js實現檔案流下載,檔案下載進度監聽VueJS
- Feign實現檔案上傳下載
- PowerShell實現檔案下載(類wget)wget
- 如何實現java檔案佇列下載Java佇列
- jsp下載檔案的實現方法JS
- python 下載檔案demoPython
- python之檔案下載Python
- flutter使用dio實現 檔案下載並實現進度監聽總結Flutter
- 使用PHP下載檔案PHP
- 使用Vue+go實現前後端檔案的上傳下載,csv檔案上傳下載可直接照搬VueGo後端
- iis實現點選檔案下載而不是開啟檔案
- javaWeb不生成臨時檔案實現壓縮檔案下載JavaWeb
- java實現檔案的下載的方法概述Java
- 前端實現檔案下載和拖拽上傳前端
- java實現sftp檔案的上傳下載JavaFTP
- Android 中 DownLoadManager 實現檔案下載Android
- 用C++實現下載檔案的功能C++
- SpringMVC實現檔案上傳&下載(2)SpringMVC
- 使用readfile()下載檔案
- Java實現上傳檔案到Oracle及從Oracle下載檔案JavaOracle
- 【python】用python指令碼實現ansible的推送、下載、上傳檔案功能Python指令碼
- 使用wget命令下載JDK失敗(檔案特別小)wgetJDK
- Java多執行緒檔案分片下載實現Java執行緒