Python:用socket模块从物联网云接收发送到数据,不知道如何加上或去除结束符? 5C

在整树莓派的物联网智能家居,用Python的socket模块和服务器通信。用的是乐为物联网平台,其规定在通信时发送和接收都以&^!为结束符来判断是否为完整包。比如发送字符串str的{"method": "response","result": {"successful": true,"message": "successful","data":[{"id":"button1","value":"0"}]}}&^!

1.其中&^!前面的应该是一个字典其中嵌套着字典和列表,那么我想问如何给这个字典加上&^!的特殊字符?
2.又如我接收到了字符串型str的{"method":"send","gatewayNo":"02","userkey":"e789edfbfbc547c2b497281ac3b997bd","f":"getAllSensors"}&^!
那么我如何把&^!去除掉,并把数据变成可操作的字典型数据?

1

5个回答

1 str = '{"method": "response","result": {"successful": true,"message": "successful","data":[{"id":"button1","value":"0"}]}}'
要在str后面加上'&^!", 可以直接使用 str = str + '&^!'
其结果:
print str就为
{"method": "response","result": {"successful": true,"message": "successful","data":[{"id":"button1","value":"0{"method": "response","result": {"successful": true,"message": "successful","data":[{"id":"button1","value":"0"}]}}&^!

2 去掉str后面的'&^!',可以直接使用str = str.strip('&^!')

1
qq_37721927
qq_37721927 谢谢您写的这么详细,我按这些写好了。
一年多之前 回复

那字典转成字符串。然后尾巴上拼接&!

接收的时候。字符串先去除末尾的&!。然后字符串用json loads转换成字典

1
oyljerry
oyljerry 如果有帮助,请采纳我的答案。谢谢。
一年多之前 回复
qq_37721927
qq_37721927 多谢,整好了。
一年多之前 回复

你的意思是字符串和字典的转换吗?如果是的话用python的json包就可以了,你的这个字符串是json格式的数据,用json.loads就可以转换为字典。至于你说的末尾符号的问题,应该是字符串的拼接操作吧。

1
qq_37721927
qq_37721927 嗯,我看了回答后整好了。
一年多之前 回复

socket模块提供了几个函数用于使用主机名和地址来工作。

gethostname()返回运行程序所在的计算机的主机名:

import socket
socket.gethostname()
'lenovo'

gethostbyname(name) 尝试将给定的主机名解释为一个IP地址。首先将检查当前计算机是否能够解释。如果不能,一个解释请求将发送给一个远程的DNS服务器(远程的DNS服务器 还可能将解释请求转发给另一个DNS服务器,直到该请求可以被处理)。gethostbyname函数返回这个IP地址或在查找失败后引发一个异常。

socket.gethostbyname('lenovo')
'192.168.1.4'
socket.gethostbyname('www.jb51.net')
'222.76.216.16'

一个扩展的形式是gethostbyname_ex(name),它返回一个包含三个元素的元组,分别是给定地址的主要的主机名、同一IP地址的可选的主机名的一个列表、关于同一主机的同一接口的其它IP地址的一个列表(列表可能都是空的)。

socket.gethostbyname('www.163.com')
'60.191.81.49'
socket.gethostbyname_ex('www.163.com')
('www.cache.split.netease.com', ['www.163.com'], ['60.191.81.48', '60.191.81.49
, '60.191.81.50', '60.191.81.51', '60.191.81.52', '60.191.81.53', '60.191.81.54
, '220.181.28.50', '220.181.28.51', '220.181.28.52', '220.181.28.53', '220.181.
8.54', '220.181.31.182', '220.181.31.183', '220.181.31.184'])

gethostbyaddr(address)函数的作用与gethostbyname_ex相同,只是你提供给它的参数是一个IP地址字符串:

socket.gethostbyaddr('202.165.102.205')
('homepage.vip.cnb.yahoo.com', ['www.yahoo.com.cn'], ['202.165.102.205'])

getservbyname(service,protocol)函数要求一个服务名(如'telnet'或'ftp')和一个协议(如'tcp'或'udp'),返回服务所使用的端口号:

socket.getservbyname('http','tcp')
80
socket.getservbyname('telnet','tcp)
23

0

你的意思是字符串和字典的转换吗?如果是的话用python的json包就可以了,你的这个字符串是json格式的数据,用json.loads就可以转换为字典。至于你说的末尾符号的问题,应该是字符串的拼接操作吧。

0
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
SOCKET数据传输用字符串加结束符
SOCKET数据传输用字符串加结束符比较简单,对于不同平台的客户端,也都用这种通用的方法简单一点。 服务器端影子对象类 public class ClientInfo { public IntPtr ConnId { get; set; } public string IpAddress { get; set; }
SIM900A发送数据到新浪云服务器
简介本文描述如何用SIM900A模块,发送数据到新浪云服务器。SIM900A将SIM900A模块连接好,用串口助手依次发送以下指令。 URL为在新浪云服务器上建的应用网址 ?a=today(a为数据名,today为要发送的数据)URL连接: AT+SAPBR=1,1 AT+HTTPINIT AT+HTTPPARA=”CID”,1 AT+HTTPPARA=”URL”,”http://1.
第七讲:3.物联网开关模块实验例程—小台灯本地触摸远程双控制
导读:利用物联网开关实现手机远程和本地触摸双控制台灯。实现1.触摸控制台灯;2.手机远程控制台灯;3.触摸关闭台灯,手机远程打开台灯。同理手机远程关闭台灯,触摸打开台灯。01准备材料物联网开关(在淘宝上搜索“疯狂物联”)、触摸模块TTP223、小台灯、电源线02事先了解下触摸模块TTP223TTP223有两种模式:自锁模式和点动模式;自锁模式:按一下输出,再按一下停止输出(输出为高电平或低电平)点...
Java中使用Socket连接判断Inputstream结束
最近在试着用java写一个socket的服务器,用python写一个socket的client
socket 发送字节如何判断接收完毕
应该要自定义结束字符: 1、最开始就发送整个数据的大小,以此来判断是否接收完毕(HTTP 协议就是这样的) 。 2、使用自定义的结束字符。 3、粘包问题,协议约定,如HTTP协议等。 须定义一个结束符,根据结束符进行结束判断。
GSM模块联网 GPRS上传物联网云平台调试笔记
之前试过用路由器上传数据到物联网云平台,由于wifi限制,用GPRS流量上传会更具优势,因此尝试用流量上传数据到物联网云平台 在物联网云平台注册好帐号后获得API地址和userkey 用sockettool工具测试好上传成功的数据格式 用GSM调试工具把相应数据发到网上尝试。 经过调试,几大物联网云平台能用的上传数据格式如下: 乐联网 POST
利用NB-IoT技术实现数据上传至阿里云
本文主要实现利用NB-IoT技术实现基于UDP协议的数据传输。 硬件平台:BC95-B5 ,在淘宝上购买即可,可以直接购买模块,然后自己利用USB转串口接到PC上。也可以购买有MCU地板的,本人购买的是基于MSP430地板的开发板,不需要自己接USB转串口工具,当然价格会贵一些。 软件平台:由于本文只是实现简单的数据收发,不需要跑MCU程序,所以主要用的工具是 NB-IoT QNavigato
SIM808芯片与服务器的通信
首先我使用的是调试串口服务器那边收到消息以后要回来一些数据。1.用调试串口模块连接SIM808的TXD,RXD引脚。并给其供电。VIO接电源电压,GND接地2.打开串口调试助手一定要查准波特率以及端口,这些错了是发不出去数据的。3.在发送器依次发送下面指令1)AT+CIPSTATUS                             查询状态2)AT+CGATT?              ...
python使用socket向客户端发送数据的方法​​​​​​​
python使用socket向客户端发送数据的方法 这篇文章主要介绍了python使用socket向客户端发送数据的方法,涉及Python使用socket实现数据通信的技巧,非常具有实用价值,需要的朋友可以参考下 import socket, sys port = 55555 host = 'localhost' data = "test" * 10485760 # 40MB of data s...
从芯片到云端 Python物联网全栈开发经验教训共享
版权声明:(谢厂节的博客)博主文章绝大部分非原创,转载望留链接。 https://blog.csdn.net/xundh/article/details/74064355 刘凯 一、前言 物联网端到端模型 物联网与互联网差异 开发环节:物联网增加了设备相关的设备域开发; 人机交互:没有标准显示组件,不支持现有UI组件,需要NUI、智能传感器 接入协议:设备能力受限,需要支持MQT...
安卓socket链接服务器接收数据APP
自己大作业做的一个智能农业用到的APP,安卓socket链接服务器接收传感器的数据 。
利用Socket传输文件时,接收方判断文件末尾的方法
Socket传输文件。一般采用文件流的方式。无论要传输的文件什么样的类型,它都是文件,我们都可以将它看成是文本文件。尽管用记事本打开后它有可能乱码。这一种意识很重要,因为这能有效地降低搭建程序的难度,简化问题的复杂性。 既然把文件都看成是文本文件了,那么就很容易理解要传输的文件是由一个一个的“字符”(Char)构成,因此,为了加快传输,便想起了使用缓冲式发送和接收。方法就是声明一个缓冲池,
NB-IOT(BC95模组)对接华为中国电信物联网平台上行数据与下行数据总流程
上行数据总流程:设备端收集数据--->通过NB模块发送到平台--->电信平台接收到数据并下发ACK--->设备端收到ACK确认发送成功(上行数据完成); 下行数据总流程:说明:目前我用IoT_OceanConnect_North_GUI_APPDemo-master\application中的Demo下发命令:Demo下发数据--->平台中我的设备 设备详情 历史命令中可见...
使用socket和mysql编写一个简单的物联网服务器程序
1 准备工作该程序主要接收下位机发来的离床上床消息,并存入数据库,达到实时监控床位状态的目的1.1 开发环境使用了java语言,平台是eclipse,JDK版本:1.7.0_13,数据库使用mysql,需要向程序中导入mysql-connector-java-5.1.28-bin.jar的驱动包1.2 数据库建立表名:RY 设计: 1.3 协议发送在监测变化时 包头 床位 状态
GPRS连接阿里云
使用GPRS模块,通过串口发送AT指令连接阿里云,实现IOT。
物联网全栈教程-从云端到设备(八)
一这一篇文章零妖老哥将给你展示两个电脑软件的使用方法,将极大地方便你调试与MQTT有关的物联网项目。一个叫MQTT客户端用来模拟设备向云端发送数据和接收云端的数据;另一个叫作MQTT单片机编程小工具,是技小新针对阿里云MQTT服务器连接过程中的痛点,自己编写的一个电脑程序,用来生成连接阿里云MQTT服务器时的账号密码等信息的。二首先出场亮相的叫 MQTT.fx-1.3.1 的软件,是一个运行在电脑...
使用WIFI模块与阿里云物联网套件进行透传数据通讯(M0E1系列)
使用WIFI模块与物联网套件进行透传数据通讯(M0E1系列)前言进入AT指令模式配置相应的AT指令如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注脚注释也是必不可少的KaTeX数学公式新的甘特图功能,丰富你的文章UML 图表FLowchart流程图导出与导入导出导入 前言 M0E1系列模组,是基于ESP8266开...
网络编程(22)—— socket客户端和服务端收发数据包需要一对一的关系吗?
其实这个题目应该是一个疑问句,接触了这么久的TCPIP网络编程,一直不敢确定是不是在客户端和服务端分别进行读和写时,write和read要成对出现? 我想这也是很多网络编程的新手存在的疑问吧。         下面,就针对这个问题进行试验,以解答长久以来的疑惑。   我们写这样一个服务端,每当接收到客户端的数据是重复发送三次,发回给客户端。 #include #include #inclu
udp socket 接收数据
import socket if __name__ == '__main__': # 1. 创建udp协议socket udp_socket = socket.socket(socket.AF_INET, socket.SOCK_DGRAM) # 2. 准备数据 send_content = "哈哈,我又来了发送数据啦~" # 对字符串进行gbk的编码获...
GPRS数据接收服务器端
GPRS数据接收的服务端。在静态IP地址的服务器上运行,可以接收GPRS发送的数据,并且可以和GPRS客户端进行发送信息。接收到的信息可以导出为Excel文件。
请求云端数据库的数据并发送至树莓派(目的地址)
import os, io, sys, re, time, base64, json import webbrowser, urllib.request while(True): url = "http://13.67.110.154:8080/Raspberry" stdout = urllib.request.urlopen(url) ControlResource...
树莓派+DHT11温湿度传感器+yeelink物联网云
一、配置准备1.DHT11简介DHT11是一款有已校准数字信号输出的温湿度传感器。 精度湿度+-5%RH, 温度+-2℃,量程湿度20-90%RH, 温度0~50℃。DHT11有四个引脚,分别是VCC,DATA,NC,GND2.电路连接本博文中python程序使用的是BCM编号方式,17号即pin11接DHT11的DATA,VCC接3.3V,NC悬空,GND接0V,可通过下图找到对应引脚,进行连线。
【安卓与物联网】Arduino开发板与Android之间通信
关于Arduino开发板 Arduino是一款开源电子原型平台,硬件部分是可以用来做电路连接的Arduino电路板。可以通过编写程序,最后烧写入开发板,配合上一些传感器,以及富有创造力的设计可以创造出很多神奇的东西。 在大三的时候,对物联网的感兴趣,让我直接省吃俭用在网络买了个Arduino开发板(Arduino入门套装160),然后个人在寝室瞎折腾~ 就像大多数人说的那样,物联网会在将来掀起大
Dccduino物联网应用——基于W5500的数据传输
转载自:http://www.dzjishu.com/forum.php?mod=viewthread&tid=142&extra=page%3D1 W5500的具体介绍已经在前面一些章节简单使用介绍过了,就不多述叙述了,只要说几点,他是继W5100、W5200和W5300之后一款全新的全硬件TCP/IP协议栈网络芯片,这款芯片具有更低功耗与工作温度,及改良工艺,是嵌入式以太网的最佳选择方案;
单项通信的客户端程序,接受键盘输入的字符串,然后发送到服务器端显示
//单项通信的客户端程序,接受键盘输入的字符串,然后发送到服务器端显示 import java.net.*; import java.io.*; public class simpleclient { public static void main(String[] args) { //保存输入字符串 String s=null; try{ ...
CSDN物联网学习5 从芯片到云端 Python物联网全栈开发经验教训共享
刘凯一、前言物联网端到端模型物联网与互联网差异 开发环节:物联网增加了设备相关的设备域开发; 人机交互:没有标准显示组件,不支持现有UI组件,需要NUI、智能传感器 接入协议:设备能力受限,需要支持MQTT/CoAP/TCP/UDP套接字; 安全特性:设备能力受限,无法支持RSA2048算法TLS; 数据特点:物联网上传流入流量远远大于流出流量; 实时要求:物联网隐含实时要求,流入数据需要支持实时检
python实现socket网络通信
server: 1. traceback():跟踪异常返回信息 2. s=socket.socket(),创建socket,AF_INET定义domain为ipv4,SOCK_DGRAM定义了socket的type。 3. setsockopt:让socket允许地址重用,当定义多个socket时,可以将多个socket绑定到一个host与port。 4. 绑定host与port,这
python中socket接受数据的三种方法
原位置:http://aspn.activestate.com/ASPN/Cookbook/Python/Recipe/408859Description:An issue with socket.recv is how to know when you are done receiving data. A TCP stream guarantees the bytes will no
NBIOT模块 HCore BC95-B5 与电信IOT平台通信-AT命令介绍
          NBIOT模块 HCore BC95-B5 与电信IOT平台通信--AT命令介绍        前段时间,我给大家介绍了NBIOT模块如何与电信IOT平台实现南向对接--《NBIOT模块基于电信IOT平台的南向对接流程》,这里面主要讲述了电信平台上的操作。 如果对电信IOT平台操作不太熟练的同学,欢迎移步观看:                               ...
物联网之NB-IoT技术实践开发四(NB-IoT云平台对接及使用)
NB-IoT物联网通信架构 1、NB-IoT网络架构 2、NB-IoT部署 3、NB-IoT低功耗技术 NB-IoT网络架构 NB-IoT网络框架: NB-IoT部署 NB-IoT网络部署: 电信: 联通: 移动: NB-IoT电信资费: 非常简单的计费方式,连接费用=电信NB-loT连接总数*每个NB-loT连接的连接单价,若超出连接频次(2万次)...
BC95采集数据上传温湿度数据到电信云
基于NB-IOT的温湿度采集,数据上报云平台,其中包括移远BC95模块的源码的,使用STM32L476芯片
Socket.Receive 无法预知字节长度的数据接收
话不多说直接上代码: string recvStr = ""; byte[] recvBytes = new byte[1024]; int bytes; do { bytes = clientSocket.Receive(recvBytes, recvBytes.Length, 0); //从客户端接受消息 recvStr += Encoding.ASCII.GetString(recvB
Python使用struct处理二进制 解析二进制数据 解析socket数据
循环解析例如: import struct fd=file(u"h:/xxxx.index",'rb') while fd:     buf=fd.read(20)     if len(buf) == 0:         break;     print struct.unpack('5I',buf[0:20])
socket接收数据长度设置记录
近期在项目中使用原先封装的socket库时发现当长度超过1024时,接收到的字符串会有“烫烫烫”的标志出现,之前有看过大神调侃的“烫烫烫屯屯屯”,直觉地想到应该是数组的长度部分设置有问题。检查代码发现,用于接收的buffer长度为1024,而在使用socket的recv函数中也将最大长度设置为了1024,同时将buffer中的数组拷贝出去的长度也为1024,因此该字符串中没有‘\0’的结束符,打印...
实现一个《 从下位机到蓝牙模块通讯到Android客户端 》的完整物联网项目。
实现一个从“下位机到蓝牙模块通讯到Android客户端”的完整物联网项目。CSDN视频地址链接:http://edu.csdn.net/course/detail/5945 历经一个月,终于把这门课程完完整整的录制出来,这个项目也是我在大学期间的一个实战项目。那时候东筹西整的,学习了很多大神的代码,适配Android6.0权限,算可以为自己没白费功夫做出来。现在完完整整的作为一个教程视频,非常适合以
高并发的socket的高性能设计
高性能的高并发socket设计 本文是从网络上搜集的几篇较好的文章: 主要转载自: http://blog.csdn.net/qifengzou/article/details/23912267 http://www.cricode.com/3499.html 来自"祁峰"的CSDN博客: 高性能数据传输系统的框架设计 1 引言    随着互联网和物联网的高速发
使用socket判断http请求或http响应的传输结束
使用socket判断http请求或http响应的传输结束。 先把header直到\r\n\r\n整个地收下来 1. 传输完毕就关闭connection,即recv收到0个字节。 2. 有内容   if Transfer-Encoding: chunked, 就读, 直到流里有\r\n0\r\n\r\n   else if Content-Length存在, 就从头的末尾开
(转载)Python的 Socket编程接收数据
[code="Python"] import socket import sys try: s=socket.socket(socket.AF_INET,socket.SOCK_STREAM) except socket.error: print('Failed to create socket') sys.exit() print("Socket Crea...
[物联网]NB-IOT(RDA8909) udp收发数据
熟悉linux网络编程的应该对这个很熟悉了,直接上代码ing: #include "..." #define DES_IPADDR "xxx.xxx.xxx.xxx" #define DES_PORT (xxxxx) CFW_TCPIP_SOCKET_ADDR dest_addr; uint8_t sockfd1 = -1; //sockfd #define M...
Android 客户端与PC服务端socket通信接收与发送图片(终结者)
Android socket接收与发送图片
文章热词 机器学习教程 Objective-C培训 交互设计视频教程 颜色模型 设计制作学习
相关热词 mysql关联查询两次本表 native底部 react extjs glyph 图标 物联网云的课程设计 物联网云课程

相似问题