簡體   English   中英

在Windows 7上模擬套接字連接重置/超時

[英]Simulate socket connection reset/timeout on Windows 7

我想模擬一個套接字連接壞了,以便測試我的應用程序。 目標是驗證當遠程服務器的長期套接字連接在運行時重置或服務器變得不可用時,我的Java代碼是否按預期方式運行。

我嘗試在Windows防火牆中創建防火牆規則。 但是,啟用規則似乎不會影響已打開的套接字連接。 拉網線不是一種選擇,因為我必須通過與運行我的代碼的服務器的遠程桌面連接來執行這些測試。

我意識到這不是直接在Windows下,但考慮到Java的本質,它可能仍然有效。

在Linux下有一個名為Netem的程序,考慮到你的代碼是java,可能會運行。 我從來沒有使用過,所以我不能證明自己的能力或使用,但也有使用一些例子在這里 你可以在虛擬機中輕松運行Linux(比如免費的(如啤酒,或者你在英國享受的免費語音)VirtualBox),希望你的Java應用程序可以在其中運行。

可能並不完美,對於普遍缺乏專業知識感到抱歉,但它可能適用於您的需求

以編程方式將套接字讀取超時設置為1毫秒,您將始終獲得java.net.SocketTimeoutException。

一個簡單,丑陋和危險的方法是快速禁用然后通過VBScript和WMI啟用正確的NetworkAdapter

更強大但更難設置的解決方案是使用WAN仿真器來模擬數據包丟失,斷開連接和高延遲。 這里你最好的免費選擇是dummynet ,雖然那里也有許多昂貴,用戶友好的解決方案。

如果在Windows和Linux中有一種更簡單的方法可以做到這一點而不需要FreeBSD啟動光盤和帶有雙網卡的虛擬服務器,我也想聽聽它!

你可以殺死客戶端應用程序。

此外,您可以通過為此創建一個非常簡單的代理應用程序來完成此操作,該應用程序通常只轉發數據,但您可以編程為其提供命令以執行各種其他操作。 或者,如果由於某種原因,您無法終止您的客戶端應用程序,則只需刪除此代理應用程序,而不是以編程方式模擬已刪除的連接。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM