使用一个简单的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]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值