如何在python中使用socket分發(fā)文件?相信很多沒有經(jīng)驗(yàn)的人對(duì)此束手無策,為此本文總結(jié)了問題出現(xiàn)的原因和解決方法,通過這篇文章希望你能解決這個(gè)問題。
成都創(chuàng)新互聯(lián)是一家專注于成都網(wǎng)站設(shè)計(jì)、網(wǎng)站制作與策劃設(shè)計(jì),資興網(wǎng)站建設(shè)哪家好?成都創(chuàng)新互聯(lián)做網(wǎng)站,專注于網(wǎng)站建設(shè)十多年,網(wǎng)設(shè)計(jì)領(lǐng)域的專業(yè)建站公司;建站業(yè)務(wù)涵蓋:資興等地區(qū)。資興做網(wǎng)站價(jià)格咨詢:18980820575一、服務(wù)器
#!/usr/bin/env python #-*- coding:utf-8 -*- #environment:2.7 import os,json,time,socket sk = socket.socket() ip_port=('127.0.0.1',9600) sk.bind(ip_port) sk.listen(5) file_path = '/root/update/123.txt' file_name = file_path.rsplit(os.sep,1)[1] file_size = os.path.getsize(file_path) #獲取文件內(nèi)容大小 #發(fā)送給客戶端的頭部信息 header_data = { 'file_name': file_name, 'file_size': file_size, 'date': time.strftime('%Y-%m-%d %X',time.localtime()), 'charset': 'utf-8' } while True: conn, addr = sk.accept() print("%s:%s is connect"% addr) request_data = conn.recv(1024) print(request_data) # 把頭部內(nèi)容發(fā)送過去 conn.send(json.dumps(header_data)) request_data1 = conn.recv(1024) print(request_data1) f = open(file_path,'r') content = f.read() #發(fā)送文件內(nèi)容 conn.sendall(content) conn.close()
二、客戶端
#!/usr/bin/env python #-*- coding:utf-8 -*- #environment:2.7 import socket,json while True: sk = socket.socket() ip_port = ('127.0.0.1',9600) sk.connect(ip_port) user_input = raw_input('>>>:').strip() if len(user_input) == 0:continue if user_input == 'q':break sk.send(user_input) server_head_msg = json.loads(sk.recv(1024)) print(server_head_msg) #文件名res_name,文件大小res_size res_name = server_head_msg['file_name'] res_size = server_head_msg['file_size'] sk.send('已經(jīng)收到頭部信息,你可以發(fā)送數(shù)據(jù)了') #下面是循環(huán)接收文件內(nèi)容的部分 num = res_size/1024.0 if num != int(num): num = int(num) +1 else: num = int(num) for i in range(num): content = sk.recv(1024) print(content)
備注:在接收服務(wù)器端發(fā)送來的文件也按照判斷每次接收數(shù)據(jù)的大小來考慮,大致思路如下
res = '' recive_size = 0 while recive_size <= res_size: data = sk.recv(1024) recive_size += len(data) res += data else: print(res) print('done'.center(40,'='))
看完上述內(nèi)容,你們掌握如何在python中使用socket分發(fā)文件的方法了嗎?如果還想學(xué)到更多技能或想了解更多相關(guān)內(nèi)容,歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道,感謝各位的閱讀!
本文標(biāo)題:如何在python中使用socket分發(fā)文件-創(chuàng)新互聯(lián)
標(biāo)題路徑:http://jinyejixie.com/article8/jjoip.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供虛擬主機(jī)、移動(dòng)網(wǎng)站建設(shè)、標(biāo)簽優(yōu)化、靜態(tài)網(wǎng)站、網(wǎng)站維護(hù)、網(wǎng)站制作
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)