2012-02-21 5 views
1

私はサーバーに接続し、特別にフォーマットされたパケットを受け取り、テストして除外できるPythonプログラムを持っています。サーバーに接続することはできますが、パケットを受信して​​いることはわかりませんが、確信しています。私はこれをデバッグする方法を知らない。クライアントソケットがPythonコードで受信されない

class client: 
    def __init__(self, host ='127.0.0.1', port=12345):  
     self.host = host  
     self.port = port  
     self.sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)  
     self.sock.connect((self.host, self.port))  

    def get_next_event(self):  
     pkt_size_data = self.sock.recv(4)  
     # on the above line I am not getting any response, the client just waits for something....  
     pkt_size = self.size_struct.unpack((pkt_size_data))[0] #I never get here  
     pkt_data= self.sock.recv(pkt_size)  
#( get_next_event is called from an infinite loop)  

私はVS2010を使用しています - ブレークポイントを設定する - VS2010のツールを使用して、私のオブジェクトを見て - されているが、いくつかのツール私はRECVからの任意の応答を取得していない午前、なぜ私はデバッグに使用して見ることができますか?

なぜ私は何の反応も得られませんか?

+0

"私は確信していますが" - それについてはどうすればよいですか?証拠は何ですか? – izhak

+0

このプログラムは他の人によって使用されています(私は、サーバが送信しているものを変更しました、かなり理論的には、送受信されるパケットが同じタイプであることを確信しています)。 私はクライアントを修正しようとしていますが、まずそれを理解しようとしていますが、動作させることができません。 サーバはパケットを連続的に送信しています... Es – Thalia

+0

無限ループの外で、一度だけ呼び出すようにしてください。何が得られるかを見てください.4より小さいbufsizeで呼び出してみてください。今のところ、これはあなたが本当に何も受け取っていないように見えます。 – izhak

答えて

0

スニファを試してみてください。試してみてくださいhttp://www.wireshark.org/

+0

私はどのようにサーバーが実際に何かを送信しているかどうかを確認するために実行中のサーバーとのトラフィックを比較するか分からない。私はサーバーコードを踏んだが、それはそうだ... Wiresharkは、(私はツールなしで見ることができる唯一のものとして)私は、サーバーが実行されているとき、ICMPメッセージとSNMP -request、get-next-request、get-response(内容は意味をなさない) – Thalia

+0

サーバーとクライアントが通信しているインターフェイスでパケットをキャプチャし、サーバーとクライアントを実行してトラフィックをフィルタリングする必要があります。たとえば、127.0.0.1のポート12345のTCP接続 – izhak

関連する問題