2011-01-31 76 views
1

我需要在窗口上獲取(連接失敗)的快速超時。但在solaris上它的時間更長,我怎樣才能縮短它? (我試圖連接一個不存在的機器來模擬機器故障)。更改solaris網絡超時

當我執行此在Windows - >超時 - >好

d:>的telnet 192.168.23.21 222

連接爲192.168.23.21 ...無法打開連接到主機,端口23:

連接失敗

d:>

在窗口上(目標IP不存在) 然後在大約15秒內命令終止。

然而,當我從的Solaris執行此 - >很長的等待時間 - >不是我的舊代碼機這樣的好:

爲myuser @ mycomp:〜$的telnet 192.168.23.21 222

試圖192.168.23.21 ...

然後進程不會終止

,這對我有重大影響,因爲我將應用程序從Windows遷移到solaris,而且我必須能夠有這個超時(在我無法更新的舊代碼中),所以我需要在操作系統級別控制此超時與當前窗口一樣短。 如何在solaris OS中更改此超時?要短,就像我havbe它在Windows

感謝

回答

2

如果你絕對必須這樣做全系統的,有一個TCP驅動程序參數tcp_ip_abort_cinterval可以修改:

tcp_ip_abort_cinterval - 這是 量的時間一個連接是 允許保持半開狀態。這是180,000 (3分鐘)默認情況下。如果您想要(25秒),您可以將其更改爲25,000 。請注意,通過改變這個 你會發現,SLIP/PPP用戶可能有conacting 您的網站的問題。

要查看當前設置:

/usr/sbin目錄/ NDD的/ dev/TCP tcp_ip_abort_cinterval

要更改設置:

/usr/sbin目錄/ NDD -set的/ dev/TCP tcp_ip_abort_cinterval 25000

0

也許你可以設置套接字選項SO_SNDTIMEO - 該鏈接報告Solaris不尊重這種選擇,但你可能會幸運和他們」現在已經修好了。 :)

如果套接字選項不起作用,您可以隨時爲某個點設置alarm(2)並中斷您的connect(2)調用。這感覺非常糟糕,但它是一種選擇。

另一種選擇是在某個時刻切換到非阻塞套接字操作和調查在今後如果connect(2)操作成功與否。您可能會看到select(2)超時,並發現它是否出現錯誤或可讀/寫。 (又見EINPROGRESSconnect(2)

+0

這聽起來像賈森不允許更改代碼的一部分(雖然我同意,這將可能是最好改變SY可能會有意想不到的後果)。 – 2011-01-31 08:34:58

+0

@Jim Lewis,我想他必須改變大量的代碼才能從Windows移植到Solaris,他只是想不必重新構建整個事情。但是如果機器將用於他的程序,那麼您的解決方案對他來說非常適合。 :) – sarnold 2011-01-31 09:02:21