使用一个简单的python脚本将一个本地文件以码流的形式,通过UDP协议发送到对端:
2017-02-04 10:24
911 查看
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]
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]
相关文章推荐
- 用Python实现一个简单的文件传输协议
- 使用python脚本下载www.wuxia.net.cn上的书籍,并且将它们合并成一个文件
- 一个python的邮件发送脚本,自动,定时,可以附件发送,抄送,附有说明文件
- 使用winsock+UDP写的一个简单发送端程序(转)
- 使用PYTHON3写了一个简单爬虫, 通过公司代理爬取ppt素材
- 详细介绍附代码:使用jquery,和php文件构建一个简单的在线聊天室,通过ip显示googlemap
- 使用python脚本利用SSH协议通过TFTP备份批量备份山石防火墙配置
- [代码笔记] python 之网络编程: 使用udp 发送音频文件
- chrome通过file协议浏览html代码时,发送的ajax请求本地文件,会报跨域错误
- 笔试题13:采用UDP协议,编写一个简单发送字符串的程序(源码)
- 通过socket和Udp协议简单实现一个群体聊天工具(控制台)
- python使用简单http协议来传送文件
- 自行控制loadrunner的socket协议性能测试 (转) 一前言 二任务的提出 三实现方案讨论 四技术要点讲解 如何开始录制一个最简单的收发数据包脚本 写日志文件 一行一行读数据包文件 字
- 学习简单的python----最简单的python +3(写入XML,使用UDP发送)
- 终于用PYTHON作了一个实用于工作的脚本啦----通过邮件定时发送服务器空闲空间
- 一个python的邮件发送脚本,自动,定时,可以附件发送,抄送,附有说明文件 (本脚本是python的2.7.x环境下可用)
- 一个简单的使用代理访问百度页面内容的python脚本
- Android作为服务器通过USB使用Socket协议向PC客户端发送文件
- 使用python中的smtplib库,写一个简单的发送qq邮件程序,速成!!
- 使用python脚本利用SSH协议通过TFTP备份华为交换机配置