使用pyBluez通过RFComm发送文件行:意外结果

时间:2017-04-11 17:27:19

标签: python-2.7 rfcomm

运行python 2.7

阅读文件并发送:

with open(payload) as f:
        for line in f:
            syslog.syslog("Send script line: " + data)
            sock.send(line)

接收:

while True:
    data = self._client_sock.recv(1024)
    syslog.syslog("Script line: " + data)

我发送的内容:

raspiducky.py: Send script line: GUI d
raspiducky.py: Send script line: DELAY 50
raspiducky.py: Send script line: WINDOWS
raspiducky.py: Send script line: DELAY 50
raspiducky.py: Send script line: STRING terminal
raspiducky.py: Send script line: ENTER
raspiducky.py: Send script line: DELAY 2000

我收到的内容:

raspiducky.py: Script line: GUI d
raspiducky.py: Script line: DELAY 50#012WINDOWS#012DELAY 50#012STRING terminal#012ENTER#012DELAY 2000

仅按预期收到第一行。 我在其他方面做错了什么?

1 个答案:

答案 0 :(得分:0)

解决

发送:

with open(payload) as f:
        for line in f:
            sock.send(struct.pack('!I', len(line)))
            sock.send(line)

接收:

while True:
      lengthbuf = self._client_sock.recv(4)
      length, = struct.unpack('!I', lengthbuf)
      data = self._client_sock.recv(length)