今天軟體實際上場考試,發現一個嚴重問題「我的電腦 ( 伺服器端 ) 回應太慢!」造成原設計在客戶端「在接收回應後,即無法再上傳」這個動作出現過大時間間隙。在伺服器端未及回應下,客戶端連點了數個「上傳」,通通在伺服器端建立了新檔案!
這小小問題不僅連續建立新檔案,更嚴重一點是消耗伺服器系統資源速度,導致連線出現一段無回應狀態!設計時,未考慮會有人「連點」上傳的問題…
想了兩小時,其實解決方法很簡單 (原本想建立一個連線資料表來檢查,太麻煩!),在客戶端連線成功後,檢查 ip 即可
-----------------------------------------------
if(skt.getInetAddress().toString().equals(ip1)){
i=i-1;
System.out.println("已重複連線,中斷");
skt.close();
}
ip1=skt.getInetAddress().toString();
-----------------------------------------------
說明:首次連線成功後,客戶端 ip 存於 ip1 中。若客戶端連點,新連線 ip 與舊 ip1 相同,則 close 連線,並將交卷序號 i-1 改回原數。
1 則留言:
效果不錯,不會因客戶端連點,而重覆不斷建立檔案。
但卻發生幾次上傳了,伺服器端卻沒有東西!
應該還是出在連點問題,或者那台路由器太爛
張貼留言