python使用socket 先读取长度,在读取报文内容示例


Posted in Python onSeptember 26, 2019

本文实例讲述了python使用socket 先读取长度,在读取报文内容。分享给大家供大家参考,具体如下:

tlpmts1:~/sbin # cat test9105.py

# -*- coding: utf-8 -*-
import SocketServer
import socket
import time
import sys
reload(sys)
print time.ctime()
sys.setdefaultencoding('utf-8')
class SMSsendx (object):
 def Sms(self):
   #.decode('utf-8').encode('gbk')
   host='10.4.160.71'
   port = 9105
   print 'host'+'->'+host
   print 'port'+'->'+str(port)
   bufsize=10240
   addr=(host,port)
   s=socket.socket(socket.AF_INET,socket.SOCK_STREAM)
   s.settimeout(20)
   s.connect((host,port))
   data=''
   # data='<?xml version="1.0" encoding="UTF-8"?><SERVICE><SYS_HEAD><USER_ID>007144</USER_ID><TRAN_TIMESTAMP>100443923</TRAN_TIMESTAMP><AUTH_USER_ID_ARRAY><AUTH_CHECK_FLAG></AUTH_CHECK_FLAG><AUTH_CHECK_MSG></AUTH_CHECK_MSG><AUTH_USER_ID></AUTH_USER_ID></AUTH_USER_ID_ARRAY><BRANCH_ID>330600600</BRANCH_ID><TRAN_DATE>20170920</TRAN_DATE><ORG_SYS_ID>101020</ORG_SYS_ID><SOURCE_TYPE>A01</SOURCE_TYPE><PROVIDER_ID>301020</PROVIDER_ID><CONSUMER_SEQ_NO>10102020170926010000550744</CONSUMER_SEQ_NO><WS_ID>10.4.129.21</WS_ID><SERVICE_SCENE>17</SERVICE_SCENE><SERVICE_CODE>01003000003</SERVICE_CODE><CONSUMER_ID>101020</CONSUMER_ID><FILE_PATH></FILE_PATH></SYS_HEAD><APP_HEAD><LKG_FLAG></LKG_FLAG><CURRENT_NUM>0</CURRENT_NUM><WNDW_NO>0</WNDW_NO><REVERSAL_DATE></REVERSAL_DATE><TOTAL_ROWS></TOTAL_ROWS><PSWD_KEY_INDX></PSWD_KEY_INDX><SEND_TRAN_CODE></SEND_TRAN_CODE><PSWD_ECPTN_FLG></PSWD_ECPTN_FLG><AHR_MODE></AHR_MODE><BUSS_SEQ_NO>10102020170926010000550744</BUSS_SEQ_NO><WARN_CFM_FLAG></WARN_CFM_FLAG><CORP_CODE>9999</CORP_CODE><TOTAL_NUM>14</TOTAL_NUM><FEE_CFM_FLAG></FEE_CFM_FLAG><LKG_TRAN_CODE></LKG_TRAN_CODE><SEND_TRAN_NAME></SEND_TRAN_NAME><TRAN_SCENE>0000000000</TRAN_SCENE><PGUP_OR_PGDN></PGUP_OR_PGDN><CHNL_FLG_STRG>10000000000000000000</CHNL_FLG_STRG><REVERSAL_SEQ_NO></REVERSAL_SEQ_NO><REVERSAL_TRAN_TYPE></REVERSAL_TRAN_TYPE></APP_HEAD><LOCAL_HEAD></LOCAL_HEAD><BODY><CURRENT_NUM>0</CURRENT_NUM><ACCT_NO>33010000201000000459</ACCT_NO><PASSWORD_TYPE>0</PASSWORD_TYPE><START_PAGE>1</START_PAGE><TOTAL_NUM>14</TOTAL_NUM><ACCT_SERIAL_NO></ACCT_SERIAL_NO><RET_CERT_SBU_ACCT_DETAIL_FLG>1</RET_CERT_SBU_ACCT_DETAIL_FLG><SVC_FIELD>0110111100</SVC_FIELD></BODY></SERVICE>'
   # length = len(data.encode('utf-8'))
   # slen = '%08d' % length
   # data=slen + data
   # data='000314<?xml version="1.0" encoding="UTF-8"?> <Esb> <head> <Serial>21801020180528010000218475</Serial> <Channel>L06</Channel> <DateTime>2018052810241220</DateTime> <HostCode>ES999</HostCode> <TermNo>APP</TermNo> <TxnUsr>ZXGY</TxnUsr> <TxnOrg>999999999</TxnOrg> <CONSUMER_ID>218010</CONSUMER_ID> </head> </Esb>'
   data='<?xml version="1.0" encoding="UTF-8"?> <SERVICE> <SYS_HEAD> <USER_ID>004355</USER_ID> <TRAN_TIMESTAMP>173906133</TRAN_TIMESTAMP> <BRANCH_ID>330100921</BRANCH_ID> <BACK_TXN_CD>ES999</BACK_TXN_CD> <CORP_CODE>9999</CORP_CODE> <TRAN_DATE>20190528</TRAN_DATE> <ORG_SYS_ID>202020</ORG_SYS_ID> <SOURCE_TYPE>M01</SOURCE_TYPE> <ESB_SEQ_NO>50010120190528010000002780</ESB_SEQ_NO> <PROVIDER_ID>201010</PROVIDER_ID> <VERSION></VERSION> <CONSUMER_SEQ_NO>20202020190528878173906123</CONSUMER_SEQ_NO> <MESSAGE_CODE>0001</MESSAGE_CODE> <SERVICE_SCENE>27</SERVICE_SCENE> <CONSUMER_ID>202020</CONSUMER_ID> <SERVICE_CODE>01003000003</SERVICE_CODE> </SYS_HEAD> <APP_HEAD> <BUSS_SEQ_NO>20202020190424878173906123</BUSS_SEQ_NO> </APP_HEAD> <LOCAL_HEAD></LOCAL_HEAD> </SERVICE>'
   length = len(data.encode('utf-8'))
   slen = '%08d' % length
   data=slen + data
   print data
   recv_size = 0
   #msg = data.encode('gbk')
   s.send(data)
   data = s.recv(bufsize)
   # print data.strip()
   length=data
   print int(length)
   resp = s.recv(int(length));
   cur_time = time.strftime("%Y-%m-%d %H:%M:%S", time.localtime())
   print ("%s receice from server :%s") % (cur_time,data + resp)
a=SMSsendx()
a.Sms()
print time.ctime()

tlpmts1:~/sbin # python test9105.py
Thu Jul  4 16:06:43 2019
host->10.4.160.71
port->9105
00000754<?xml version="1.0" encoding="UTF-8"?> <SERVICE> <SYS_HEAD> <USER_ID>004355</USER_ID> <TRAN_TIMESTAMP>173906133</TRAN_TIMESTAMP> <BRANCH_ID>330100921</BRANCH_ID> <BACK_TXN_CD>ES999</BACK_TXN_CD> <CORP_CODE>9999</CORP_CODE> <TRAN_DATE>20190528</TRAN_DATE> <ORG_SYS_ID>202020</ORG_SYS_ID> <SOURCE_TYPE>M01</SOURCE_TYPE> <ESB_SEQ_NO>50010120190528010000002780</ESB_SEQ_NO> <PROVIDER_ID>201010</PROVIDER_ID> <VERSION></VERSION> <CONSUMER_SEQ_NO>20202020190528878173906123</CONSUMER_SEQ_NO> <MESSAGE_CODE>0001</MESSAGE_CODE> <SERVICE_SCENE>27</SERVICE_SCENE> <CONSUMER_ID>202020</CONSUMER_ID> <SERVICE_CODE>01003000003</SERVICE_CODE> </SYS_HEAD> <APP_HEAD> <BUSS_SEQ_NO>20202020190424878173906123</BUSS_SEQ_NO> </APP_HEAD> <LOCAL_HEAD></LOCAL_HEAD> </SERVICE>
539
2019-07-04 16:06:43 receice from server :00000539<?xml version="1.0" encoding="UTF-8"?><SERVICE><SYS_HEAD><RET><RET_CODE>0000</RET_CODE>
<RET_MSG>交易成功</RET_MSG>
</RET><TRAN_DATE>20190528</TRAN_DATE>
<TRAN_TIMESTAMP>173906133</TRAN_TIMESTAMP>
<SERVICE_CODE>01003000003</SERVICE_CODE>
<SERVICE_SCENE>27</SERVICE_SCENE>
<CONSUMER_SEQ_NO>20202020190528878173906123</CONSUMER_SEQ_NO>
<PROVIDER_ID>201010</PROVIDER_ID>
<CONSUMER_ID>202020</CONSUMER_ID>
</SYS_HEAD><APP_HEAD><BUSS_SEQ_NO>20202020190424878173906123</BUSS_SEQ_NO>
<TOTAL_NUM></TOTAL_NUM>
</APP_HEAD><BODY></BODY></SERVICE>
Thu Jul  4 16:06:43 2019

更多关于Python相关内容可查看本站专题:《Python Socket编程技巧总结》、《Python数据结构与算法教程》、《Python函数使用技巧总结》、《Python字符串操作技巧汇总》、《Python入门与进阶经典教程》及《Python文件与目录操作技巧汇总》

希望本文所述对大家Python程序设计有所帮助。

Python 相关文章推荐
python中的break、continue、exit()、pass全面解析
Aug 05 Python
几种实用的pythonic语法实例代码
Feb 24 Python
python3实现字符串的全排列的方法(无重复字符)
Jul 07 Python
tensorflow实现加载mnist数据集
Sep 08 Python
pygame游戏之旅 python和pygame安装教程
Nov 20 Python
为什么Python中没有&quot;a++&quot;这种写法
Nov 27 Python
python打开windows应用程序的实例
Jun 28 Python
详解numpy.meshgrid()方法使用
Aug 01 Python
pytorch查看torch.Tensor和model是否在CUDA上的实例
Jan 03 Python
解决python 执行sql语句时所传参数含有单引号的问题
Jun 06 Python
win10下python3.8的PIL库安装过程
Jun 08 Python
Python RabbitMQ实现简单的进程间通信示例
Jul 02 Python
用python写测试数据文件过程解析
Sep 25 #Python
Python使用grequests(gevent+requests)并发发送请求过程解析
Sep 25 #Python
给大家整理了19个pythonic的编程习惯(小结)
Sep 25 #Python
Python 图像对比度增强的几种方法(小结)
Sep 25 #Python
pyqt5、qtdesigner安装和环境设置教程
Sep 25 #Python
python super的使用方法及实例详解
Sep 25 #Python
Pycharm+Python+PyQt5使用详解
Sep 25 #Python
You might like
使用Xdebug调试和优化PHP程序之[1]
2007/04/17 PHP
浅谈PHP Cookie处理函数
2016/06/10 PHP
PHP简单获取网站百度搜索和搜狗搜索收录量的方法
2016/08/23 PHP
Ubuntu 16.04下安装PHP 7过程详解
2017/03/28 PHP
PHP序列化的四种实现方法与横向对比
2018/11/29 PHP
javascript检测对象中是否存在某个属性判断方法小结
2013/05/19 Javascript
js取消单选按钮选中示例代码
2013/11/14 Javascript
理解AngularJs指令
2015/12/10 Javascript
JavaScript中原型链存在的问题解析
2016/09/25 Javascript
详解如何较好的使用js
2016/12/16 Javascript
jquery表单提交带错误信息提示效果
2017/03/09 Javascript
NodeJs使用Mysql模块实现事务处理实例
2017/05/31 NodeJs
解决JavaScript中0.1+0.2不等于0.3问题
2018/10/23 Javascript
如何为你的JavaScript代码日志着色详解
2019/04/08 Javascript
Node.js实现一个HTTP服务器的方法示例
2019/05/13 Javascript
微信小程序scroll-view隐藏滚动条的方法详解
2020/03/25 Javascript
前端使用crypto.js进行加密的函数代码
2020/08/16 Javascript
python sys模块sys.path使用方法示例
2013/12/04 Python
Python使用smtplib模块发送电子邮件的流程详解
2016/06/27 Python
浅谈python中copy和deepcopy中的区别
2017/10/23 Python
Python中str.join()简单用法示例
2018/03/20 Python
django 实现电子支付功能的示例代码
2018/07/25 Python
python用列表生成式写嵌套循环的方法
2018/11/08 Python
十行代码使用Python写一个USB病毒
2019/06/21 Python
wxPython窗体拆分布局基础组件
2019/11/19 Python
CSS3中媒体查询结合rem布局适配手机屏幕
2019/06/10 HTML / CSS
Aquatalia官网:意大利著名鞋履品牌
2019/09/26 全球购物
公共事业管理本科生求职信
2013/10/07 职场文书
结构工程个人自荐信范文
2013/11/30 职场文书
公司爱心捐款倡议书
2014/05/14 职场文书
群众路线自我剖析及整改措施
2014/11/04 职场文书
保险公司客户经理岗位职责
2015/04/09 职场文书
出纳试用期工作总结2015
2015/05/28 职场文书
再读《皇帝的新衣》的读后感悟!
2019/08/07 职场文书
那些美到让人窒息的诗句,值得你收藏!
2019/08/20 职场文书
Python中非常使用的6种基本变量的操作与技巧
2022/03/22 Python