這幾天服務器突發一個bug, 登陸的人員會發生串號, 就是A玩家登陸后, 得到B玩家的角色.
這個bug觸發的主要原因是網絡底層在得到一個客戶端的連接請求時, 會分配一個id,而這個id是用棧在保存的,當有新的連接, id就出棧, 當連接斷開時,id入棧, 這樣就導致了id被重復利用的次數非常高,尤其是某些id. 當這些id生成后,會進入登陸隊列,等待登陸結果, 如果這個時候登陸認證模塊的速度很慢, 或者說這個時候客戶端退出了, 這個時候的id就是一個無效id了, 可是這個只有網絡底層知道, 這就造成引用層編寫的難度. 所以最好的解決方案就是每次的連接id都是不一樣的,類似操作系統的HANDLE