一. 檔案傳輸
# ***********************************== 伺服器端 ***********************************==# 思路: 做乙個要穿的內容的字典, 計算字典的長度, 然後傳送字典的長度和字典的json的字串, 再傳送內容
import struct
import socket
import json
import hashlib
sock=socket.socket()
sock.bind(('127.0.0.1',8800))
sock.listen(5)
while 1:
print("server is working....")
conn,addr= sock.accept()
while 1:
# 接收json的打包長度
file_info_length_pack=conn.recv(4)
file_info_length=struct.unpack("i",file_info_length_pack)[0]
# 接收json字串
file_info_json=conn.recv(file_info_length).decode("utf8")
file_info=json.loads(file_info_json)
action=file_info.get("action")
filename=file_info.get("filename")
filesize=file_info.get("filesize")
# 迴圈接收檔案
md5=hashlib.md5()
with open("put/"+filename,"wb") as f:
recv_data_length=0
while recv_data_length二. socketserver模組
import socketserver
class myserver(socketserver.baserequesthandler):
def handle(self):
# 位元組型別
while 1:
# 針對window系統
try:
print("等待資訊")
data = self.request.recv(1024) # 阻塞
# 針對linux
if len(data) == 0:
break
if data == b'exit':
break
response = data + b'sb'
self.request.send(response)
except exception as e:
break
self.request.close()
# 1 建立socket物件 2 self.socket.bind() 3 self.socket.listen(5)
server=socketserver.forkingudpserver(("127.0.0.1",8899),myserver)
server.serve_forever()
VC檔案傳輸
vc 檔案傳輸的實現 2008 07 20 20 33 要實現檔案傳輸最簡單的辦法是寫兩個執行緒,乙個伺服器段的傳送處理執行緒,乙個客戶端的接收處理執行緒。執行緒處理函式需要宣告為類的靜態成員,由於不可訪問類內部的資料成員,所以引數傳遞裡面最好有個類的指標 伺服器段的傳送處理執行緒 cfiletra...
簡單檔案傳輸
原理 檔案傳輸的原理其實很簡單,服務端先在某個埠監聽,等待客戶端的連線,連線成功後,服務端開啟指定的檔案,然後讀取檔案,再通過建立的套接字傳送給客戶端。如果要實現乙個服務端能與多個客戶端連線,則需要用到多執行緒,下面給出一對一的實現 有興趣的朋友可以用多執行緒實現一對多。程式 include inc...
C Socket 檔案傳輸
如果需要接收多個檔案的時候,不能重複呼叫socket.bind ipep 這樣會出現socket異常的,因為socket已經監聽了乙個埠了,埠不能被重複使用。完整 傳送端。client private void button2 click object sender,eventargs e priv...