本篇文章主要介绍了"每日一题PYTHON如何发送16进制的UDP查询包?",主要涉及到方面的内容,对于系统运维感兴趣的同学可以参考一下:
原文数据:common_data.py# -*- coding: utf-8 -*-
"""
#
# Authors: limanman
# OsChina: ...
原文数据:
common_data.py
# -*- coding: utf-8 -*-
"""
#
# Authors: limanman
# OsChina: http://my.oschina.net/pydevops/
# Purpose:
#
"""
# 查询StatusHelper状态是否正常
statushelper_isalive = '''15 20 00 b0 65 31 32 30 37 65 33 38 62 37 64 34 31
62 35 32 2c 61 63 61 38 35 33 33 34 31 31 31 36 34 65 39 36 2c 36 35 64 37 33
35 36 35 39 31 63 33 38 30 65 36 2c 38 63 61 33 66 64 66 32 65 64 39 62 66 32
64 66 2c 34 37 31 65 35 62 33 61 36 62 64 33 37 66 31 35 2c 63 30 61 33 63 35
62 34 34 32 30 65 35 65 36 62 2c 30 32 64 32 30 35 33 35 31 32 30 37 38 62 61
35 2c 31 39 30 37 33 61 38 62 33 36 36 37 30 62 39 36 2c 30 36 37 37 34 65 64
64 34 66 63 36 39 37 66 61 2c 39 64 61 37 33 36 63 31 66 31 34 34 61 39 61 31
32 30 30 30 30 30 30 2c 32 2c 32 30 30 2c 32 30 2c 32 30 30 30 2c 32 30 30 30
30 30 2c 32 32 32 32 32 2c 32 32 32 2c 32 32 2c 32 32 32 32 32 32 00'''
if __name__ == '__main__':
print statushelper_isalive
具体要求:
1.发送如上16进制数据包到UDP指定端口,线上状态查询服务器功能测试
代码实现:
# -*- coding: utf-8 -*-
"""
#
# Authors: limanman
# OsChina: http://my.oschina.net/pydevops/
# Purpose:
#
"""
import socket
import struct
from common_data import statushelper_isalive
# 转换为二进制流
def struct_pack(hex_strs):
"""Pack hex_strs to """
all_strs = ''
hex_strs = hex_strs.replace('\n', ' ')
hex_list = hex_strs.split()
for cur_item in hex_list:
# 十六进制转换为10进制然后在组包二进制字符流
all_strs += struct.pack('B', int(cur_item, 16))
return all_strs
def main():
"""Main function."""
# 组包解密
print repr(struct_pack(statushelper_isalive))
if __name__ == '__main__':
main()
以上就介绍了每日一题PYTHON如何发送16进制的UDP查询包?,包括了方面的内容,希望对系统运维有兴趣的朋友有所帮助。
本文网址链接:http://www.codes51.com/article/detail_332613.html