2017-04-14 47 views
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() 
+0

這是蟒蛇2還是3?考慮到'r.split()'看起來'recentnumb'可能是'str'或'bytes',而不是'int'。在python 2上,'str'永遠不會等於0.在python 3上,你會得到一個錯誤。 – tdelaney

+0

docs state'socket.recv()'「返回值是一個表示接收到的數據的字符串」,你可以嘗試'int(v [1])' – davedwards

+0

該列表是什麼格式? TCP是一種流媒體協議,而不是一種消息傳遞協議。不能保證單個'recv'完全得到單個'send'中寫入的內容。 – tdelaney

回答

0

的文檔狀態socket.recv()「返回值是代表 接收的數據串」,你可以嘗試int(v[1])

相關問題