如果客戶端通過正常的tcp連接連接到服務器,並且稍後客戶端的連接斷開,服務器將獲得(假設爲主動模式){tcp_closed,Socket}。但有些情況下,服務器不知道客戶端已斷開連接,如電源故障或崩潰等(我相信,我可能是錯的)。在這些情況下,客戶端消失了,但服務器仍然認爲它已連接。如果服務器在這種情況下嘗試向客戶端發送消息,它是否會假定客戶端收到消息,或者tcp堆棧是否會在低級別上對其進行排序,並且服務器返回某種錯誤?Erlang:在關閉的連接上發送
我知道這是一個簡單的問題,但我一直無法自己測試它,因爲我無法讓客戶端發生災難性的失敗,就像我需要它(甚至殺死-9沒有這樣做) 。有人對這個有經驗麼?
TCP會知道該消息沒有被傳遞,但Erlang是否會接受它是一個不同的問題。您是否嘗試拔掉客戶端的以太網電纜?這是非常低的影響和易於測試。 – nmichaels 2011-04-07 17:50:14
我只使用我自己的機器來測試使用本地主機,我目前無法訪問另一臺機器。 – 2011-04-07 17:51:19
啊,沒有趣......我想你可以使用虛擬機,但是這比在虛擬機上提問要方便得多。 – nmichaels 2011-04-07 17:53:30