2016-04-18 7 views
1

私は、送信者から受信者にパケットを渡すTCPプロトコルを使用しています。私は私の "パケット"を埋め込むコンテンツからヘッダーを分割できる必要があります。私のヘッダはその後、私のパケットがこのPythonでバイト文字列の最初の20バイトをカットする最も簡単な方法は何ですか?

packet = tcp_header + user_data 

と同様に構成されているので、

tcp_header = pack('!HHLLBBH', tcp_source, tcp_dest, tcp_seq, tcp_ack_seq, tcp_offset_res, tcp_flags, 
          tcp_window) + pack('H', tcp_check) + pack('!H', tcp_urg_ptr) 

のように詰め込まれて

私はこの

(tcp_source, tcp_dest, tcp_seq, tcp_ack_seq, tcp_offset_res, tcp_flags,\ 
      tcp_window, tcp_check, tcp_urg_ptr) = unpack('!HHLLBBHHH', sent_packet) 

のようにそれを解凍しかし、私は送った場合にのみ動作しますヘッダーだけ。開梱する前にヘッダーからコンテンツを分割するにはどうすればよいですか?

おかげ

答えて

2

あなたがstruct.unpack_from探している機能、

struct.unpack_from('!HHLLBBHHH', sent_packet) 
+1

感謝! struct.calcsizeと組み合わせると正しい軌道に乗ります。 –

関連する問題