【讀書筆記】iOS-深入解剖對等網路,讀書筆記ios-

來源:互聯網
上載者:User

【讀書筆記】iOS-深入解剖對等網路,讀書筆記ios-

協議本身是一個運行在UDP之上的定製協議。我所以決定使用一個定製協議很簡單。首先,當前這個任務看起來足夠簡單,因此與嘗試改進一個現在協議相比,直接構建一個定製協議更為容易。其次,定製協議可以將開銷減少至最小並儘可能地提高效能。最後,這本身就是一個很好的教學練習。

 

TCP是一個流協議,每次查看網頁,檢查郵件或者下載檔案時使用的就是TCP協議。從本質上講,TCP會在兩個電腦之間建立一個雙向管道,並盡其所能地掩蓋其底層網路的不可靠性和不確定性。

 

UDP會暴露很多不確定性。它使用一個校正和來確保不會傳遞被攻破的資料,但它並不會做任何嘗試來掩蓋出現問題。如果一個路由器決定丟掉一個資料包,那麼這個資料永遠不會被接收。如果一個較早的資料包被延遲,以至於較晚到達,資料的妝收就會亂序。因此,要由各個應用採取措施對這些問題做出補償。

 

但是UDP使用的資源更少,而且能提供更好的效能。本質上TCP是基於串連的,所以,對於應用要通訊的每一個遠程裝置都必須建立並維持串連,而如果計劃支援大量此類裝置,開銷就會非常大。另外,TCP會嘗試恢複,但是恢複要花費時間。與之不同,UDP只是跳過丟包,繼續發送後續的更新。如果你追求效能,而且能夠應對遺失資料,那麼UDP是上選。這正是在vocie-over-IP應用,線上遊戲以及這個樣本工程中使用UDP的原因。

 

座標就是32位有符號整數。這有些大材小用,因為iPhone螢幕只有320*480,不過這樣可以為將來留出餘地。至於顏色,沒有必要使用大於單位元組的類型來表示各個顏色分量。這樣一來,每個分量的取值範圍就是0~255,這已經是大多數螢幕所能再現的最大顏色解析度。

 

C編譯器總是會犧牲空間來換取速度,如果電腦處理的資料是對齊的,處理速度則最快,所謂對齊是指資料所在的記憶體位址恰好是其大小的倍數。int32_t類型是4位元組,所以編譯器會嘗試使其地址是4的倍數。

 

前一種體系稱為大端位元組序,後一種稱為小端位元組序。目前,Mac中使用的Intel x86 CPU採用小端位元組序,iPhone中使用的ARM CPU也是如此。較早的Mac中使用的PowerPC處理器採用大端位元組序,一般的,通常會看到不同平中上分別使用不同的位元組序。如果使用不正確 位元組序讀取資料,會得出混亂而且毫無意義的數字,所以,明確位元組序非常重要。

 

實際上,至少還存在另外一種位元組序:中間端位元組序!在一些較早的,少見的體繫結構中,並沒有使用前向也沒有使用向後順序,而是採用了一種奇怪的混合順序,對於案例整數305 419 896,會寫為{0x34,0x12,0x78,0x56}.正是由於在這樣一些較老的系統上儲存字串”UNIX“時會表示為”NUXI“,所以區別位元組序的問題有時稱為”NUXI問題"。

 

 

 

 

 

參考資料:《精彩iPhone炫酷開發-七位一線高手的編程和設計範例》

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.