點擊重連後,假如原來有兩個客戶,也就是客戶數組有兩個成員,
計次循環設置循環次數為2,第壹次循環n為1
執行第壹次循環,服務器斷開客戶數組[1]保存的客戶,這時觸發子程序 _服務器1_客戶離開
而妳的這個子程序內含有刪除數組成員的操作,被斷開的客戶被從數組中刪除,這時數組內只有1個成員,而在進行第2次循環時,n為2,這時客戶數組沒有第二個成員,所以超出下標,報錯。
妳加了延遲後之所以沒錯誤是因為:
同樣,觸發 _服務器1_客戶離開後刪除了成員,但因為妳設置了延遲,進程會掛起,這時妳的客戶端被斷開之後再壹次執行了連接命令,觸發 _服務器1_客戶進入 子程序。客戶數組再次加入成員,又有了第二個成員,所以不會發生數組下標超出範圍的錯誤,但是這麽做,並不是所有客戶都被重連,而是只有客戶數組的第壹個成員被重連兩次。
另外關於妳的修改端口的問題:
妳的客戶端連接服務器的永遠是固定的8600端口,妳的服務器更改端口之後,服務端並不知道,依然連接8600端口,肯定是連不上的。
謝謝,給分。。。。。。
有疑問請加 我的昵稱。。。。。