檔案傳輸, socketserver模組

2022-07-17 01:18:17 字數 1630 閱讀 4062

一. 檔案傳輸

# ***********************************== 伺服器端 ***********************************==

# 思路: 做乙個要穿的內容的字典, 計算字典的長度, 然後傳送字典的長度和字典的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...