2017-04-11 3 views
0

実行するには、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 

期待どおりに最初の行だけが受信されます。 私は残りの行に間違っていますか?

答えて

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)