怪物奇妙物语

宇宙无敌超级美少男的怪物奇妙物语

首页 新随笔 联系 管理
  819 随笔 :: 0 文章 :: 2 评论 :: 16万 阅读
import socket
import json
import time
import struct
PACK_FMT_STR = '!BBHLH6s'
IP = '10.13.32.11'
Port = 19204
def packMasg(reqId, msgType, msg={}):
msgLen = 0
jsonStr = json.dumps(msg)
if (msg != {}):
msgLen = len(jsonStr)
rawMsg = struct.pack(PACK_FMT_STR, 0x5A, 0x01, reqId, msgLen,msgType, b'\x00\x00\x00\x00\x00\x00')
print("{:02X} {:02X} {:04X} {:08X} {:04X}"
.format(0x5A, 0x01, reqId, msgLen, msgType))
if (msg != {}):
rawMsg += bytearray(jsonStr,'ascii')
print(msg)
return rawMsg
so = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
so.connect((IP, Port))
so.settimeout(5)
#test_msg = packMasg(1,3051,{"source_id": "LM48","id": "LM47",})
test_msg = packMasg(1,1004)
print("\n\nreq:")
print(' '.join('{:02X}'.format(x) for x in test_msg))
so.send(test_msg)
dataall = b''
# while True:
print('\n\n\n')
try:
data = so.recv(16)
except socket.timeout:
print('timeout')
so.close
jsonDataLen = 0
backReqNum = 0
if(len(data) < 16):
print('pack head error')
print(data)
so.close()
else:
header = struct.unpack(PACK_FMT_STR, data)
print("{:02X} {:02X} {:04X} {:08X} {:04X} {:02X} {:02X} {:02X} {:02X} {:02X} {:02X} length: {}"
.format(header[0], header[1], header[2], header[3], header[4],
header[5][0], header[5][1], header[5][2], header[5][3], header[5][4], header[5][5],
header[3]))
jsonDataLen = header[3]
backReqNum = header[4]
dataall += data
data = b''
readSize = 1024
try:
while (jsonDataLen > 0):
recv = so.recv(readSize)
data += recv
jsonDataLen -= len(recv)
if jsonDataLen < readSize:
readSize = jsonDataLen
print(json.dumps(json.loads(data), indent=1))
dataall += data
#print(' '.join('{:02X}'.format(x) for x in dataall))
except socket.timeout:
print('timeout')
so.close()
posted on   超级无敌美少男战士  阅读(123)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 微软正式发布.NET 10 Preview 1:开启下一代开发框架新篇章
· 没有源码,如何修改代码逻辑?
· PowerShell开发游戏 · 打蜜蜂
· 在鹅厂做java开发是什么体验
· WPF到Web的无缝过渡:英雄联盟客户端的OpenSilver迁移实战
点击右上角即可分享
微信分享提示