最終,我還是認為不要用clanlib中的socket包裝類cl_socket為好.
本來以為它還可以撐多一下,在遊戲的網路功能實現才差不多再來改.
主要由3個方面考慮.
1>為每個socket加入緩衝以降底對recv函式的呼叫次數,另外如果使用cl_socket中的訊號通知.則有可能會漏掉一些資料報.我昨天就碰到這個
情況.當傳送兩次的資料報,而這邊可能只會有一次訊號通知,假如沒有在這一次內接收完.將不會再有訊號出現.因此一但對它進行等待.就會產
生超時。假如每次接收資料都使用select這類函式的話,可能會出現頻繁的在使用者態與核心態中來會切換,導致效能下降。
2>怎麼說cl_socket中的訊號通知多了一層的呼叫,因為cl_socket生成的時候都會把自已往某個執行緒
中添資訊,以此作為訊號的產生源。它中間就是用select來實現的,這樣的話。通過select產生訊號.
然後再在具體執行緒中等待這個訊號,這樣又多了一層關係。
3>而面對clanlib中的網路流元件,則不知會碰到什麼問題.況且以前也實現過類似的功能。因此
可以保正在短時間內完成。
因此,我今天將要實現乙個類似於流這樣的乙個socket封裝.
1>假如緩衝中讀取的資料報長度等於,緩衝中剩餘的長度.那麼就表示緩衝區可能小了。
2>socket中 共享讀寫 緩衝區.中間以讀寫指標來控制其訪問。
3>在socket中的傳送資料,盡量每輪在一起傳送.因為以後可能會把socket中的組包演算法給關閉。
4>接收socket中的資料,應該只能從緩衝區中防問.
5>目前具體的socket還是使用阻塞模式
6>socket封裝以引用物件來實現。
相應部分調整:
1>伺服器中的socket監聽accept與資料處理共用乙個執行緒。
206 12 15炸彈人開發日誌
目前的正在執行的計畫 1.支援物品組,以實現乙個物品能夠占用多個方格 2.精靈編輯 3.物品編輯 4.讀寫地圖 5.設定玩家起始位置 矩形邊框顏色 字型顏色 字型大小 6.設定背景與碰撞物 7.設定獎品 資料 放棄精靈編輯器,與物品編輯器是因為這兩樣東西雖然是小東西,卻占用了將近乙個星期時間。而我發...
2007 01 24炸彈人開發日誌
解決了兩個關於移動與碰撞的bug 1 bug描述 當炸彈在接近牆的時候,人就不能從接近牆的那一邊把炸彈踢走 原因 人物在產生碰撞的時候,沒有移動到整數格仔內 在炸彈碰撞檢測的時候加了邊介審查,導致直接在邊介附近停止,因為移動的碰撞檢測 是一但發現則立即停止的嚴格檢查。2 bug描述 人物在產生平移效...
2007 07 17炸彈人開發日誌
完成 正在處理 不處理 炸彈人遊戲開發目前修改計畫重新分為5個里程碑 1 遊戲中能使用網路對戰以及錄象功能 2 重構遊戲 1 改進id管理器 2 加入記憶體管理器 3 統一遊戲物件管理器 4 統一資源管理器的使用方法 5 加入日誌 6 調整遊戲物件中的 3 包裝遊戲 1 遊戲gui的調整 2 遊戲聲...