我正在尝试使用Python中的套接字对嵌入式设备进行非常简单的读/写操作。出于某种原因,sock.recv()命令返回我发送的字符串而不是我期望的返回字符串。以下是我打开套接字的方法:
HOST1 = '192.168.1.201'
PORT1 = 4998
sock = socket.socket( socket.AF_INET, socket.SOCK_STREAM)
sock.connect((HOST1, PORT1))
while (1):
sock.sendall("getstate,1:1\r")
state1 = sock.recv(32)
sock.sendall("getstate,1:2\r")
state2 = sock.recv(32)
print "states:", state1, state2
预期的返回字符串(state1或state2)是当前设备状态,其形式为“state,1:1,0”(off)或“state,1:1,1”(on)。但是,我经常返回自己的命令(“getstate ..”命令)而不是返回字符串。我以为sock.sendall()会清除发送缓冲区?我是一个带插座的菜鸟,所以任何帮助都会受到赞赏。我已经在这方面进行了广泛的搜索,我找不到任何有同样问题的人。我手动测试了远程设备,它总是发回预期的返回字符串,所以我认为问题必须与我使用套接字的方式有关。