2013-01-20 65 views
0

具有2 Python程序,host1.py和同時運行,並且經由socket使得通信host2.py -socket.recv(256)如何返回None?

host1.py具有reciveSock = socket(AF_INET,SOCK_DGRAM)

host2.py具有sendSocket = socket(AF_INET,SOCK_DGRAM)

兩個套接字都相互綁定。

host1.py有 -

try: 
    msgBacked = reciveSock.recv(256) 
except: 
    pass 
if(msgBacked is None): 
    print "isNone!" 

事實上它打印isNone!平均msgBackedNone

所有發送的從host2.pyhost1.py是一種sendSocket.send("ACK")以便有哪些tranported到host1.py發送字符串的值。

那麼這個msgBacked怎麼可能是None

+2

如果刪除'try/except'會怎麼樣? –

+0

@DavidWolever:'msgReturn = reciveSock.recv(256) socket.timeout:timed out' – URL87

+4

**這**是**完全**爲什麼'嘗試:...除了:pass'就是*單*在Python中你可以做的最可怕的事情!那麼if語句中的那些'()'怎麼了?它是Python,而不是<某種其他語言>!請..沒有Python開發人員想看到那裏的括號! – ThiefMaster

回答

3

最可能的是receiveSock.recvthrowing a timeout exception,msgBacked先前被設置爲None。嘗試刪除try .. except,看看會發生什麼。