python应用于网络_python应用于网络通信

项目需要用到采用python实现维护测试工具,测试对象是Linux设备,需要在PC端采用python获取Linux设备相关信息

一、采用udp获取普通信息

udpserver = socket(AF_INET, SOCK_DGRAM)

udpserver.bind(ip, port)

data, client_addr = udpserver.recvfrom(BUFSIZE)

二、采用tcp获取重要信息

tcpclient = socket(AF_INET, SOCK_STREAM)

tcpclient.connect(ip, port)

data = tcpclient.recv(BUFFSIZE)

注:tcp获取的网络报文时分片、组包的,需要考虑此种情况

三、采用python的ctypes进行解析网络中的报文

class abc_info_st(BigEndianStructure):

_fields_ = [

('_info_a',    c_uint),

('_info_b',    c_ushort ),

('_info_c',    c_ubyte ),

('_recv',      c_ubyte * 3),

('_info_str',  c_char * 32),

]

根据Linux设备端的结构体信息定义对应python端结构体信息,字符串注意采用c_char类型

abc_info = abc_info_st()

memmove(addressof(abc_info), data, sizeof(abc_info)) //data及为第一、二节socket接收的data

print('%d %d %d %s ' % (abc_info._info_a, abc_info._info_b, abc_info._info_c,abc_info._info_s.decode()))

注:字符串类型需要采用decode(原因是涉及到python的语言的编码格式需要utf8、unicode等格式)

三、记录日志

with open('abc_log.log', 'a') as f:

f.write(abc_info._info_s.decode())

参考文档:

python做科学计算: http://www..com/moon1992/p/4946114.html

python中的父子进程          https://blog..net/wenzhou1219/article/details/81320622

UDPServer使用         https://www..com/IQ-Python/p/6814529.html

python socketserver支持多线程模式       https://www..com/bigberg/p/7763503.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值