2017-04-11 25 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)