python 通过 UDP 传输文件

发布时间:2011-05-04 15:32:03, 关注:+7230, 赞美:+6, 不爽:+8

本文标签: 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]

如果你觉得本站对你有帮助,欢迎向本站赞助 :P

使用支付宝捐赠

Copyright© Python4cn(news, jobs) simple-is-better.com, 技术驱动:powered by web.py 空间主机:Webfaction

版权申明:文章转载已注明出处,如有疑问请来信咨询。本站为 python 语言推广公益网站,与 python 官方没有任何关系。

联系/投搞/留言: en.simple.is.better@gmail.com 向本站捐赠