2

我正在尝试使用 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”(关闭)或“state,1:1,1”(打开)。但是,我经常取回我自己的命令(“getstate..”命令)而不是返回字符串。我认为 sock.sendall() 会清除发送缓冲区?我是一个带插座的菜鸟,所以任何帮助将不胜感激。我已经对此进行了广泛的搜索,但找不到遇到同样问题的任何人。我已经手动测试了远程设备,它总是发回预期的返回字符串,所以我相信问题一定出在我使用套接字的方式上。

4

0 回答 0