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下载FTP上的文件夹的实现代码
Feb 10 Python
c++生成dll使用python调用dll的方法
Jan 20 Python
Python实现list反转实例汇总
Nov 11 Python
浅谈python中requests模块导入的问题
May 18 Python
vue.js实现输入框输入值内容实时响应变化示例
Jul 07 Python
详解Python网络框架Django和Scrapy安装指南
Apr 01 Python
python3 使用Opencv打开USB摄像头,配置1080P分辨率的操作
Dec 11 Python
Pytorch实现LSTM和GRU示例
Jan 14 Python
Python使用PyQt5/PySide2编写一个极简的音乐播放器功能
Feb 07 Python
Python用input输入列表的实例代码
Feb 07 Python
Pandas时间序列:时期(period)及其算术运算详解
Feb 25 Python
python如何删除文件、目录
Jun 23 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
PHP开发中的错误收集,不定期更新。
2011/02/03 PHP
PHP获取MSN好友列表类的实现代码
2013/06/23 PHP
PHP实现货币换算的方法
2014/11/29 PHP
Laravel创建数据库表结构的例子
2019/10/09 PHP
Laravel + Elasticsearch 实现中文搜索的方法
2020/02/02 PHP
javascript 点击整页变灰的效果(可做退出效果)。
2008/01/09 Javascript
javascript ajax 仿百度分页函数
2013/10/29 Javascript
JavaScript 判断用户输入的邮箱及手机格式是否正确
2013/12/08 Javascript
浅析tr的隐藏和显示问题
2014/03/05 Javascript
jQuery模拟360浏览器切屏效果幻灯片(附demo源码下载)
2016/01/29 Javascript
基于jquery实现简单的分页控件
2016/03/17 Javascript
Javascript的表单与验证-非空验证
2016/03/18 Javascript
深入理解JQuery中的事件与动画
2016/05/18 Javascript
jQuery 实现图片的依次加载图片功能
2017/07/06 jQuery
解决html input验证只能输入数字,不能输入其他的问题
2017/07/21 Javascript
Parcel.js + Vue 2.x 极速零配置打包体验教程
2017/12/24 Javascript
Vue实现回到顶部和底部动画效果
2019/07/31 Javascript
微信小程序通过js实现瀑布流布局详解
2019/08/28 Javascript
Flutter实现仿微信底部菜单栏功能
2019/09/18 Javascript
微信小程序可滑动月日历组件使用详解
2019/10/21 Javascript
vue-next/runtime-core 源码阅读指南详解
2019/10/25 Javascript
JS实现数据动态渲染的竖向步骤条
2020/06/24 Javascript
vue 实现超长文本截取,悬浮框提示
2020/07/29 Javascript
从零学python系列之数据处理编程实例(一)
2014/05/22 Python
Python字符串拼接、截取及替换方法总结分析
2016/04/13 Python
Python爬虫辅助利器PyQuery模块的安装使用攻略
2016/04/24 Python
使用Python和xlwt向Excel文件中写入中文的实例
2018/04/21 Python
django mysql数据库及图片上传接口详解
2019/07/18 Python
python多线程实现同时执行两个while循环的操作
2020/05/02 Python
如何利用python生成MD5并去重
2020/12/07 Python
娇韵诗加拿大官网:Clarins加拿大
2017/11/20 全球购物
附答案的Java面试题
2012/11/19 面试题
应届生自荐信范文
2014/02/21 职场文书
2015庆祝七一建党节94周年活动总结
2015/03/20 职场文书
SQL Server中锁的用法
2022/05/20 SQL Server
centos环境下nginx高可用集群的搭建指南
2022/07/23 Servers