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问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
物联网开发入门记:OpenWRT读串口数据curl上传到云服务平台
openwrt+curl实现串口数据上传到物联网平台,可以用于物联网产品开发
SOCKET数据传输用字符串加结束符
SOCKET数据传输用字符串加结束符比较简单,对于不同平台的客户端,也都用这种通用的方法简单一点。 服务器端影子对象类 public class ClientInfo { public IntPtr ConnId { get; set; } public string IpAddress { get; set; }
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...
GSM模块联网 GPRS上传物联网云平台调试笔记
之前试过用路由器上传数据到物联网云平台,由于wifi限制,用GPRS流量上传会更具优势,因此尝试用流量上传数据到物联网云平台 在物联网云平台注册好帐号后获得API地址和userkey 用sockettool工具测试好上传成功的数据格式 用GSM调试工具把相应数据发到网上尝试。 经过调试,几大物联网云平台能用的上传数据格式如下: 乐联网 POST
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 协议发送在监测变化时 包头 床位 状态
在不知道流的长度下,怎样判断从socket中读取的字节流结束?
我尝试过使用read() = -1这种方法来判断是否读完字节流Java代码 DataInputStream in = new DataInputStream(socket.getInputStream());   ByteArrayOutputStream swapStream = new ByteArrayOutputStream();   int read = 
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.
Android socket获取服务器返回的多行数据
1:用eclipse打包好的APK,通过微信发送给别人之后都会被添加一个.1后缀,导致不能直接安装。     这个是微信的一种安全机制,防止安装包在不确定安全的前提下自动运行,所以自动把收到的安装包后缀都加了.1,需要手动删除才能安装。 2:Socket连接,客户端接收服务武器返回的字符串数据: 下面是最开始的socket接受程序代码: 当服务器返回的只是一行简单的字符串时,没
利用NB-IoT技术实现数据上传至阿里云
本文主要实现利用NB-IoT技术实现基于UDP协议的数据传输。 硬件平台:BC95-B5 ,在淘宝上购买即可,可以直接购买模块,然后自己利用USB转串口接到PC上。也可以购买有MCU地板的,本人购买的是基于MSP430地板的开发板,不需要自己接USB转串口工具,当然价格会贵一些。 软件平台:由于本文只是实现简单的数据收发,不需要跑MCU程序,所以主要用的工具是 NB-IoT QNavigato
Java中使用Socket连接判断Inputstream结束
最近在试着用java写一个socket的服务器,用python写一个socket的client
java socket 连接数据传输判断是否结束
Java当中的Socket类,其实是使用TCP协议进行传输的.TCP是可靠的一种传输协议.  如果想用TCP协议,并且,服务端和客户端,在没有信息进行传输的时候,也不断开连接,一般情况下,客户端会在Socket超时之前,想服务端发送一个用于维持连接的信息包,来维持连接.但是
SM32W108无线射频模块两节点之间通信实例
本文基于802.15.4/ZigBee的SimpleMac协议栈编写程序,实现两个STM32W108无线节点之间的通信。节点分为SUN节点和PLANET节点,SUN节点使用STM32W108无线开发板,PLANET节点使用STM32W108无线节点,SUN节点可与PC机进行通信。
MicroPython玩转物联网——WIFI通信开发板
互联网+、全民IoT等热词的兴起让物联网逐渐成为新一代信息技术的重要组成部分。思科首席未来学家、首席技术学家戴夫-埃万斯(DaveEvans)称,在未来十年内,物联网、云服务和虚拟人类等十大技术发展趋势,将深刻地改变我们的世界。MicroPython的出现让Python这种“胶水语言”成功引用到嵌入式领域,也使得Python控制单片机成为可能。 进群:125240963   即可获取数十套PDF...
TCP协议用在python和wifi模块之间
python建立TCP连接需要用到socket协议。   如果是TCP Server,建立TCP连接的步骤是:1.创建socket套接字2.绑定(bind())本地的ip地址和端口号3.监听端口(listen),如果有socket连接,便接收(accept)。   如果是TCP Client,建立TCP连接的步骤是:1.创建socket套接字2.连接(connect)远程主机的ip地址和端口号
Python socket模拟客户端一直接收服务端数据,同时不影响客户端发送数据
client.py-- coding: utf-8 --import socket, select from threading import Thread from threading import Lock from time import sleep使用select方式的客户端def start_client_select(): c_handler = socket.socke
Python入门:socket连续接收客户端数据
from socketserver import ThreadingMixIn,ForkingMixIn,StreamRequestHandler import socket,selects = socket.socket() #host = socket.gethostname() host = '127.0.0.1' print(host) port = 8088 s.bind((host,po
通过迈思德物联网网关将三菱Q00UJ系列PLC数据上传到云服务器
国内第一家支持Q00UJ系列PLC数据远程传输的网关。
GPRS模块的使用与相应SOCKET服务器的搭建
欢迎扫码关注微信公众号:柒零玖嵌入式,更多嵌入式软硬件相关分享!GPRS可以实现数据的远程无线上传,只需一张SIM卡,十分方便,现在我们来搭建一个 GPRS无线上传数据的例子。1、准备工作(1)GPRS模块,市场上大部分使用方法都大致相同(2)正常使用有流量的SIM卡(3)java socket的基础(4)花生壳域名(5)USB转串口线2、硬件模块的使用(1)GPRS模块类似如下:不同品牌有差异,...
JAVA中Socket数据接收
BufferedReader reader = new BufferedReader(new InputStreamReader(socket.getInputStream())); System.out.println(reader.readLine()); 这个是按行读取必须有换行符 ‘\n’InputStream input = socket.getInputStream(); wh
通过python下的socket实现组播数据的发送和接收
关于网络组播的解释我不在此详述了,想了解的直接百娘就可以了,本人也是新手,研究了几天Python的组播编程后,目前终于成功的解决了自己找的各种麻烦,所以现在总结如下: python实现socket组播有N种写法,我现在只给出自己认为比较妥当的写法。 数据发送 sender: import time import struct from socket import * SENDERIP =
Python_Socket_接送来自客户端的数据出现乱码
最新在学python,问题有很多,但过程还算美好,有问题都及时解决了 下面附上碰到的用网络调试助手发送中文,服务端接受乱码解决思路 这个网络调试助手的默认编码格式应该是gbk,所以解码的时候用格式用gbk 下面是服务端接收信息的代码: import socket def main(): # 1.创建套接字 udp_socket = socket.socket(socket.A...
socket 发送字节如何判断接收完毕
应该要自定义结束字符: 1、最开始就发送整个数据的大小,以此来判断是否接收完毕(HTTP 协议就是这样的) 。 2、使用自定义的结束字符。 3、粘包问题,协议约定,如HTTP协议等。 须定义一个结束符,根据结束符进行结束判断。
网络编程(22)—— socket客户端和服务端收发数据包需要一对一的关系吗?
其实这个题目应该是一个疑问句,接触了这么久的TCPIP网络编程,一直不敢确定是不是在客户端和服务端分别进行读和写时,write和read要成对出现? 我想这也是很多网络编程的新手存在的疑问吧。         下面,就针对这个问题进行试验,以解答长久以来的疑惑。   我们写这样一个服务端,每当接收到客户端的数据是重复发送三次,发回给客户端。 #include #include #inclu
Python socket收发文件以及二进制文件打包
Python socket介绍https://gist.github.com/kevinkindom/108ffd675cb9253f8f71 Python 二进制文件处理http://kaiyuan.me/2015/12/25/python-struct/ 收发二进制文件client#-*-coding:utf-8-*-import socket import os import sys imp
从端到云——工业物联网项目全栈快速开发实践
时至今日,随着国内外大公司的介入,物联网越来越热。本文作者将结合工控领域的特色及当前物联网领域的一些新技术新趋势,分享工业物联网和民用物联网的特色及异同,并从自身实际应用开发的角度,解读从端到云,工业物联网项目的全栈快速开发之路。
从芯片到云端 Python物联网全栈开发实践
物联网开发重新定义了"全栈开发"的范围。Python作为一门快速发展的语言,已经成为系统集成领域的优选语言之一,其可覆盖从电路逻辑设计到大数据分析的物联网端到端开发。各领域开发者可以利用Python交叉涉足物联网设备、边缘计算、云计算、数据分析的工程设计。 《从芯片到云端:Python物联网全栈开发实践》尝试让读者建立物联网设计的整体概念,从基础概念开始,到相关技术选型、开源工程、参考设计与经验分享。无论是物联网领域的创业者,还是系统架构师,都可从本书中获得灵感。本书对于嵌入式开发领域的开发者尤具学习价值,利用Python可加快开发迭代速度、降低开发成本,并可以基于嵌入式Python建立完整的物联网软硬件生态
Tcp从Socket客户端上传文件到ServerSocket服务端
目的: 从客户端上传指定的文件到服务端,服务端返回上传结果 思路: 一、客户端:        1.创建客户端Socket,指定好IP地址和端口号        2.创建要上传的文件流对象        3.创建写入流(网络流),从Socket获取。将指定文件写入到网络流中,以便服务端接收        4.从网络流中接收服务端返回的信息        5.关闭流资源 二
物联网全栈教程-从云端到设备(一)
一2016年的时候,我还在学校里面准备着毕业论文,当时做的课题是预测一个挖掘机上面的一个继电器的寿命。我们的想法是检测其吸合的次数,然后根据吸合的次数来预计其寿命,这个想法很简单。因为一个继电器失效之前通常会正常吸合一定的次数比如10W次。 二当时还是一个愣头青,想法简单。实际去做的时候才发现事情远没有想的那么简单,因为即使同一个批次的继电器,其每个个体差异都挺大的,而且继电器失效的方式也有很多,...
使用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存在, 就从头的末尾开
Socket.Receive 无法预知字节长度的数据接收
话不多说直接上代码: string recvStr = ""; byte[] recvBytes = new byte[1024]; int bytes; do { bytes = clientSocket.Receive(recvBytes, recvBytes.Length, 0); //从客户端接受消息 recvStr += Encoding.ASCII.GetString(recvB
CC2541和cc2540实现蓝牙模块和手机通信收发数据
实现蓝牙和手机收数据和发数据,以及蓝牙和手机的配对和绑定,配对密码是357000,适合cc2541和cc2540的板子。
socket客户端与服务端代码(解决16进制输入流转换字符串操作)
Android socket 客户端 与 服务端代码实现 完整代码
请求云端数据库发送数据至树莓派
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...
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
ESP8266发送温湿度到物联网(1)
首先介绍一下,我是使用的物联网是乐为物联,网址是:http://www.lewei50.com/,免费的,只需要申请一个账号,你还可以加这个物联网的微信公众号,在上面也可以远程查看你的温湿度(声明 ,我不是打广告哦),关于如何设置传感器和如何给物联网发送温湿度,都可以看下面这个网址:http://www.lewei50.com/dev/doc/176,尤其注意后面的通讯协议的格式,这个是使用ESP
单项通信的客户端程序,接受键盘输入的字符串,然后发送到服务器端显示
//单项通信的客户端程序,接受键盘输入的字符串,然后发送到服务器端显示 import java.net.*; import java.io.*; public class simpleclient { public static void main(String[] args) { //保存输入字符串 String s=null; try{ ...
NB-IOT 温湿度数据上报及IOT平台数据下发(STM32L4,电信Oceanconnect, COAP协议)
在设备侧,智能设备采用了NB-IOT芯片,它和中国电信物联网开放平台之间通过CoAP协议通讯。CoAP报文的payload里是设备的应用数据。应用server通过http/https协议和平台通讯,通过调用平台的开放API来控制设备,平台把设备上报的数据推送给应用服务器。平台支持对设备数据进行协议解析,转换成标准的json格式数据。图1 组网图应用功能很简单,温湿度数据上报,主要通过低功耗STM3...
实现一个《 从下位机到蓝牙模块通讯到Android客户端 》的完整物联网项目。
实现一个从“下位机到蓝牙模块通讯到Android客户端”的完整物联网项目。CSDN视频地址链接:http://edu.csdn.net/course/detail/5945 历经一个月,终于把这门课程完完整整的录制出来,这个项目也是我在大学期间的一个实战项目。那时候东筹西整的,学习了很多大神的代码,适配Android6.0权限,算可以为自己没白费功夫做出来。现在完完整整的作为一个教程视频,非常适合以
文章热词 智能硬件/物联网 物联网技术培训 智能硬件/物联网课程 物联网黑电平与线性化 智能硬件/物联网视频教程
相关热词 c++接收socket数据 php如何接收c#数据 c# socket 接收c++ 新浪云python使用教程 python如何学习使用模块6