→ AndCycle:Returns the number of bytes sent. 05/09 08:01
可能沒說清楚,我是想寫類似 multiprocessing.Connection 的東西
所以想知道發生錯誤時 multiprocessing.Connection 會怎麼處理
比如說 recv 到空字串的時候,multiprocessing.Connection 會 raise EOFError
這在一邊已經 close socket,另一邊仍繼續使用 recv 時會發生
但我找不出方法讓 send 回傳 0
所以沒辦法知道 multiprocessing.Connection 在這情況下會有什麼動作
document 也沒寫清楚,只好用測試的 ...
→ AndCycle:document寫的已經很清楚了, 他的return value就是這個, 05/09 17:19
→ AndCycle:所有有錯誤的情況都會另外raise exception, 05/09 17:20
→ AndCycle:如果你想要0那麻煩請你自己包裝起來處理 05/09 17:21
→ AndCycle:s.send('') 你就會得到你的零, 你為什麼會想要零呢 ... 05/09 17:51
→ AndCycle:還有你quote的那句話並不是跟你說他會回傳零 =_= 05/09 17:52
因為看範例這樣寫:
def mysend(self, msg):
totalsent = 0
while totalsent < MSGLEN:
sent = self.sock.send(msg[totalsent:])
if sent == 0:
raise RuntimeError("socket connection broken")
totalsent = totalsent + sent
才以為 send 回傳 0 是代表有錯誤發生
但是就算是傳空字串,也不可能跑到範例的 while 迴圈裡
所以這範例是有點小錯誤的嗎?問題很蠢請見諒
※ 編輯: os653 來自: 114.46.147.61 (05/10 01:43)