1
我正在從套接字接收數據,然後將其中的一個元素保存爲recentnumb
。將從套接字接收的值與整數進行比較時出現意外的結果
當我剛剛if
語句之前打印它打印正確,它是0。不幸的是我的if
語句總是行爲就好像recentnumb
比0不同,不管我怎麼修改表達式。有人可以向我解釋爲什麼我的if
聲明沒有看到recentnumb
爲0嗎?
r = wrappedSocket.recv(1024)
v = r.split()
recentnumb = v[1]
print recentnumb
if recentnumb != 0:
Dothis()
else:
OrDothis()
這是蟒蛇2還是3?考慮到'r.split()'看起來'recentnumb'可能是'str'或'bytes',而不是'int'。在python 2上,'str'永遠不會等於0.在python 3上,你會得到一個錯誤。 – tdelaney
docs state'socket.recv()'「返回值是一個表示接收到的數據的字符串」,你可以嘗試'int(v [1])' – davedwards
該列表是什麼格式? TCP是一種流媒體協議,而不是一種消息傳遞協議。不能保證單個'recv'完全得到單個'send'中寫入的內容。 – tdelaney