這幾天再寫jabber component 時發生一個奇怪的問題, 伺服器與component 固定一段時間就會終止通訊,然而連線此時還是存在的,伺服器或客乎端都沒有當掉,而且一般的jabber client 連接在上面也沒有問題,惟獨自己實做的server與client 無法通訊,後來發現;幾個socket 重要的參數,當client需要樣長時間連線時這些參數格外重要:
setsockopt SOL_SOCKET, SO_KEEPALIVE
setsockopt IPPROTO_TCP, TCP_KEEPIDLE
setsockopt IPPROTO_TCP, TCP_KEEPCNT
setsockopt IPPROTO_TCP, TCP_KEEPINTVL
程式再加了這些tcp 參數設定後,症狀完全消失
setsockopt SOL_SOCKET, SO_KEEPALIVE
setsockopt IPPROTO_TCP, TCP_KEEPIDLE
setsockopt IPPROTO_TCP, TCP_KEEPCNT
setsockopt IPPROTO_TCP, TCP_KEEPINTVL
程式再加了這些tcp 參數設定後,症狀完全消失
留言