2017-04-11 24 views
0

执行Python 2.7发送文件行超过RFCOMM与pyBluez:意想不到的结果

读取文件并发送:

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 

只按照预期收到第一行。 我在做什么错了与其余的线?

回答

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)