為何在nio模式下無法設定setSoTimeout

ljh410發表於2004-06-29
SocketChannel incomingChannel = readyChannel.accept();
Socket tmpSocket = incomingChannel.socket();
tmpSocket.setSoTimeout(120000);

以上程式碼是在nio的模式下,透過設定socket的超時來緩解惡意使用者的攻擊,但是實際卻無法得到相應的效果,即setSoTimeout無法生效,但是不會報錯.
如果不這樣實現,請問一下咳有沒有別的方法可以防止惡意使用者的DOS攻擊.

就像你telnet到一個伺服器上 如果超過一定的時間沒有發資訊就自動會被結束通話的那樣,伺服器是怎麼實現的?用原來的阻塞模式都沒有問題!

相關文章