這是學習《unity3d網路遊戲實戰》第二版的總結。
c#網路庫里非同步使用begin和end,不論是connect、accept,還是send、receive本身都是同步方法,意味著只要沒有獲取到程式就會卡在那永不動彈。
非同步是新開出一條執行緒,在新執行緒中阻塞等待,因此主線程不受影響。
使用非同步需要細緻的考慮邏輯上的順序關係,不容易
可以使用同步達到非同步避免卡住的效果,使用poll可以檢測當前socket是否連線失敗,是否能夠(需要)接受資料(讀)或者傳送資料(寫)。
說白了最簡單的同步是會卡住的,遊戲體驗會很不好,解決方案可以用非同步,但是要考慮何時send,receive,邏輯順序會很重要,不太好寫。還可以使用poll同步的方式解決,其實poll就是個方法,可以判斷一下當前需不需要send、receive,不需要就不做,免得卡住,但是這樣程式每次都要遍歷所有的socket來判斷。這樣會很占用cpu,
這裡要說個重點:書上雖然最後介紹的select poll,但select poll 和 poll其實消耗是一樣大的,並不是最優解,很容易讓人會錯意。select poll 只不過就是把 poll select出來,可以獲取到一堆需要send或者receive的socket。內部實現照樣是全部遍歷一遍socket,linux中的epoll才是消耗小。epoll使用事件觸發的方法,相當於讓那些該做操作的socket主動報備,不需要全部遍歷挨個詢問。
伺服器基礎知識
1.isp internet service provider 網際網路服務提供商,即向廣大使用者綜合提供網際網路接入業務 資訊業務 和增值業務的電信運營商。isp是經國家主管部門批准的正式運營企業,享受國家法律保護。網路內容服務商 英文為 internet content provider 簡寫為...
伺服器基礎知識
一 伺服器端需要搭建web 伺服器 1.web伺服器是乙個軟體 2.做什麼 處理客戶端請求,解析報頭等 3.因為大部分請求都是http 請求,所以 伺服器 web伺服器 4.web伺服器是一種服務,有兩個做得比較好的伺服器 apache 公司的apache 和微軟公司的 iis二 應用伺服器 1.應...
伺服器基礎知識
定義 從廣義上講,伺服器是指網路中能對其它機器提供某些服務的計算機系統 如果乙個pc對外提供ftp服務,也可以叫伺服器 從狹義上講,伺服器是專指某些高效能計算機,能通過網路,對外提供服務。相對於普通pc來說,在穩定性 安全性 效能等方面都要求更高,因此cpu 晶元組 記憶體 磁碟系統 網路等硬體和普...