2017-04-14 3 views
1

ソケットからデータを受け取り、その要素の1つをrecentnumbとして保存しています。ソケットから受け取った値を比較したときに予期しない結果が発生しました

私はちょうどそれが正しくrecentnumbは関係なく、私が式を変更する方法、0とは異なるなかったかのように0残念ながら私のif文は常に振る舞いだと印刷しif文の前にそれを印刷。誰かがなぜ私のifステートメントでrecentnumbが0と表示されないのか説明できますか?

r = wrappedSocket.recv(1024) 
v = r.split() 
recentnumb = v[1] 

print recentnumb 

if recentnumb != 0: 
    Dothis() 
else: 
    OrDothis() 
+0

これはPython 2または3ですか? 'r.split()'を考えると 'recentnumb'は' int'ではなく 'str'か' bytes'です。 Python 2では、 'str'は0になることはありません。Python 3ではエラーが発生します。 – tdelaney

+0

docsは 'socket.recv()'の返り値は受け取ったデータを表す文字列です。 'int(v [1])'を試してみるかもしれません。 – davedwards

+0

そのリストはどのような形式ですか? TCPは、メッセージングプロトコルではなく、ストリーミングプロトコルです。単一の 'recv'が単一の' send'で書かれたものを正確に得るという保証はありません。 – tdelaney

答えて

0

ドキュメント状態socket.recv()「戻り値は、データが受信 を表す文字列である」、あなたはint(v[1])を試してみてください。

関連する問題