所以,我在做一个有专有通讯协议的项目。我需要发送数据在给定的格式和上,下,左和右坐标到特定的IP地址。通信是通过TCP进行的,我需要用python编写TCP客户端程序,以以下格式发送数据:
IP地址/握手地址:192.166.166.166
这是Data format。你知道吗
数据类型为无符号字符0-255(8位二进制),数据长度为6-64位。你知道吗
每帧的数据长度为10-64位。你知道吗
因此,如果我想将对象从1.0.0.1移动到(23,45,67,89),这是给定的指令:
将255 255 10 3 1 0 0 1 23 45 67 89发送到指定的IP地址。我想指定的IP地址是192.166.166.166。你可以参考数据格式来理解我要发送的数据。很简单。你知道吗
问题是,我应该如何在python中通过TCP发送这一系列无符号字符?你知道吗
我试过以下方法:
import socket
host = '192.166.166.166'
port = 80 # 80 Because TCP
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.connect((host, port))
data = '255 255 10 3 1 0 0 1 23 45 67 89'
s.sendall(data)
result = s.recv(1024)
s.close()
print('Received', repr(result))
显然这不管用。我没有指定无符号字符,我只是发送原始数据和空格。你知道吗
这是我从服务器得到的回报:
('Received', '\'HTTP/1.0 400 Bad Request\\r\\nServer: Mini-IoT-314\\r\\nDate: , 31 1969 23:59:59 GMT\\r\\nPragma: no-
cache\\r\\nCache-Control: no-cache\\r\\nContent-Type:
text/html\\r\\nConnection: close\\r\\n\\r\\n<HTML><HEAD><TITLE>400 Bad
Request</TITLE></HEAD>\\n<BODY BGCOLOR="#cc9999"><H4>400 Bad
Request</H4>\\nCan\\\'t parse request.\\n</BODY></HTML>\\n\'')
现在,我不知道该做什么以及如何发送这些数据,以便服务器可以适当地处理这些数据。我真的很感谢你的帮助。你知道吗
不是我的专长,只是一个想法: 您可能需要将数据作为结构发送。你知道吗
看看python的ctypes:https://docs.python.org/3/library/ctypes.html#structured-data-types
1)我在Python3.5中测试了您的代码,只是做了一些细微的修改,而不是发送字符串,而是通过将字符串转换成字节来发送字节
2)不要使用端口80,可能是您的http服务器正在该端口上运行, 尝试使用其他端口。会有用的
相关问题 更多 >
编程相关推荐