2009-08-28 72 views
3

我試圖模擬連接到另一個服務器的連接到某個進程的服務器時出現故障的場景。只需拔掉網線就無法工作,因爲我需要另一個進程連接。將網絡模擬到特定進程

這種工作是否有任何工具?我在Windows上。謝謝!

回答

3

有幾層可以模擬這個。如果你的兩臺服務器在兩個不同的TCP端口上偵聽,最簡單的方法是。在這種情況下,您可以運行兩個tcp代理,並在想要模擬故障時停止/暫停一個代理。對於Windows,我建議使用tcpTrace來做到這一點。

另一種選擇是將兩臺服務器綁定到兩個虛擬NIC,它們橋接到物理NIC。當然,如果您有兩個物理網卡,您可以將每個服務器進程綁定到不同的物理網卡。

在較低級別,您可以運行WAN模擬器。大多數模擬器允許您損害特定類型的流量或特定端口。一個這樣的模擬器是Packetstorm

我建議的另一種方法是將調試器附加到一個進程,並使用調試器暫停進程上的所有線程。通常,一個進程不會死亡,但會陷入垃圾收集或循環中。由於套接字未關閉,許多「高可用性」解決方案不會自動進行故障轉移。

+0

謝謝你的答案。 tcpTrace解決方案看起來很有前景。我會嘗試這一個。 – Gant 2009-08-28 06:44:39

+0

它的工作原理! tcpTrace非常易於使用。 – Gant 2009-08-28 17:16:22

2

一種方法是將mock的相關網絡連接代碼用於測試。在這種情況下,如果連接斷開,您可能會想嘲笑它通常會返回的任何內容。

+0

感謝您的回答。但我無法訪問進程的源代碼,因此我無法在應用程序級別進行模擬。 – Gant 2009-08-28 06:32:06

0

一個窮人的做法,如果你可以使用睡眠/你的機器上休眠模式:

  • 在Windows防火牆設置出站規則,以禁止對特定程序的連接。
  • 已連接的插座保持連接狀態:將機器暫時置於睡眠/休眠模式一段時間,以強制這些插座斷開連接。
  • 系統恢復後,程序無法建立新的連接。
  • 只要您禁用防火牆規則,就可以建立新的連接。

請注意,它不會模擬網絡中斷,因爲每個連接都會立即失敗並出現權限錯誤。但它阻止了一個進程建立連接。