python 通過UDP傳輸文件


使用一個簡單的python腳本將一個本地文件以碼流的形式,通過UDP協議發送到對端:
import socket
import os
import stat
import struct
 
MAX_PACK_SIZE = 100
DEST_IP = 'localhost'
DEST_PORT = 17800
 
filename = raw_input("input filename")
 
filesize = os.stat(filename)[stat.ST_SIZE]
 
f = open(filename, "rb")
 
chList = []
for i in range(0, filesize):
    (ch,) = struct.unpack("B", f.read(1))
    chList.append(ch)
 
client = socket.socket( socket.AF_INET, socket.SOCK_DGRAM )
 
packSize = 0
string = ""
args = []
for i in range(0, filesize):
    packSize = packSize + 1
    string = string + struct.pack("B", chList[i])
    if (MAX_PACK_SIZE == packSize or i == filesize - 1):
        client.sendto(string, (DEST_IP, DEST_PORT))
        packSize = 0
        string = ""
client.close()
 
使用到的知識點:
1、UDP客戶端最簡單的實現:
client = socket.socket( socket.AF_INET, socket.SOCK_DGRAM )
client.sendto(string, (DEST_IP, DEST_PORT))
client.close()
 
2、python中對碼流的操作:struct.pack 和 struct.unpack的使用
(ch,) = struct.unpack("B", f.read(1))
string = string + struct.pack("B", chList[i])
 
3、二進制文件的讀取:
f = open(filename, "rb")
 
4、獲得系統中某個文件的字節數
filesize = os.stat(filename)[stat.ST_SIZE]


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM