私はいくつかのソケット/選択プログラミングを行っています。私のイベントの1つは、受信バイト文字列'OK'
によって引き起こされます。私はutf_8を使用して、サーバーから送信されたすべてをエンコードし、クライアント上でデコードしています。しかし、私のクライアントの比較は機能していないし、私のifステートメントは本当に評価されることはありません。ここで問題のコードは次のとおりです。python3で文字列とデコードされたユニコードを比較する
サーバー側:
def broadcast_string(self, data, omit_sock): # broadcasts data utf_8 encoded to all socks
for sock in self.descriptors:
if sock is not self.server and sock is not omit_sock:
sock.send(data.encode('utf_8'))
print(data)
def start_game(self): # i call this to send 'OK'
data = 'OK'
self.broadcast_string(data, 0)
self.new_round()
クライアント側:
else: # got data from server
if data.decode('utf_8') == 'OK': # i've tried substituting this with a var, no luck
self.playstarted = True
else:
sys.stdout.write(data.decode('utf_8') + "\n")
sys.stdout.flush()
if self.playstarted is True: # never reached because if statement never True
command = input("-->")
私はthisを読んでいると私は、私はそれに従うが、明らかではないと思います。私もPythonシェルを使って例を書いて、True
と評価していましたが、このプログラムを実行していませんでした。
ありがとうございます!
。何が印刷されますか? – Robert
OKがstdoutに出力されます。申し訳ありませんが、私はインデントを編集してより明確にしました。最後のif文は、if、elseにネストされていてはなりません。 – Andrew
python3では、 'str'はまだ型名ですか?あなたはちょうど型メソッドを呼び出すことができるので。 – Robert