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()
これはPython 2または3ですか? 'r.split()'を考えると 'recentnumb'は' int'ではなく 'str'か' bytes'です。 Python 2では、 'str'は0になることはありません。Python 3ではエラーが発生します。 – tdelaney
docsは 'socket.recv()'の返り値は受け取ったデータを表す文字列です。 'int(v [1])'を試してみるかもしれません。 – davedwards
そのリストはどのような形式ですか? TCPは、メッセージングプロトコルではなく、ストリーミングプロトコルです。単一の 'recv'が単一の' send'で書かれたものを正確に得るという保証はありません。 – tdelaney