玩轉iOS開發 iOS中的Socket程式設計 一

2021-09-11 09:26:08 字數 2366 閱讀 2122

文章分享至我的個人技術部落格:

socket翻譯過來中文稱為套接字, 這裡我找到了一段比較官方的解釋socket是什麼東西:

socket是通訊的基石,是支援tcp/ip協議的網路通訊的基本操作單元,包含進行網路通訊必須的五種資訊:連線使用的協議本地主機的ip位址本地程序的協議埠遠地主機的ip位址遠地程序的協議埠

在實際當中, 肯定是不止乙個tcp/ip或者是乙個應用程式程序在傳輸資料, 為了可以區分開來, 系統提供了一套api, 方便tcp/ip與應用程式互動, 一般把這個稱為socket api.

醬紫應用層可以和傳輸層通過這個socket api, 區分來自不同的應用程式程序或者是網路通訊, 使得資料可以併發傳輸.

socket的使用其實也沒有我們想象中那麼難, 只是這裡需要有乙個前提條件, 因為建立socket通訊是至少需要一對套接字, 其中乙個是執行在我們的客戶端上, 稱為client socket, 還有乙個是執行在伺服器上, 稱為service socket.

socket之間的連線過程分為三個過程:

socket同時支援tcpudp兩種傳輸協議, 啥意思呢?

socket使用tcp協議通訊的時候,socket就是乙個tcp的連線, 那麼如果socket使用的是udp協議通訊, 那麼這時候的socket就是udp連線.

如果要有圖的話, 大概就這樣了:

既然降到socket, 那麼就要說說網路裡面的協議, 這裡就要普及一下網路裡面的到底都有啥, 首先我們要知道, 在網路裡面一共有七層協議.

從上往下分的話:

但我們通常會把底下三層(網路層,資料鏈路層,物理層)統稱為**層, 一般都是專門搞網路的網路工程師大神們研究的物件.

而上面四層(傳輸層,會話層,表示層,應用層)被稱為主機層, 也是廣大使用者所面向和關心的內容.

說到協議, 我們就不得不提一下http:

http協議是基於tcp連線的, 所以三者根本就沒啥可比性.

socket應用層tcp/ip協議族通訊中間的軟體抽象層, 是它的一組介面.

既然都提到了tcp/ip這個協議, 那麼就來講講,tcp/ip裡的五層模型.

這裡面的五層模型分別為:

那麼我們日常生活中所接觸到的網路器材有哪些? 分別處於哪個模型?

其中tcp/ip應用層比較特殊, 它是包含了會話層,表達層,應用層等功能, 這裡要說一點,tcp/ip協議並不能在傳輸層總是保證可靠的傳輸資料報, 但七層模型可以做到.

tcp/ip還提供了另一種傳輸模式, 叫做udp(使用者資料報協議), 但這種協議不能保證可靠的資料報傳輸.

這裡再解釋一下:

總的來說tcp是乙個資料流的模式協議, 而udp是一種資料報模式的協議.

剛剛說了socket是基於tcp/ip協議上的抽象, 也就是說socket只是對tcp/ip的封裝, 本身是沒有協議的, 只有通過socket api, 我們才能夠使用tcp/ip協議.

大概的關係圖就是醬紫吧:

碼字很費腦, 看官賞點飯錢可好

玩轉iOS開發 NSURLSession講解 三

文章分享至我的個人技術部落格 雖然前面兩講都是說了nsurlsession的一些理論上的知識,但我們現在起碼對nsurlsession有個大概的了解,並不會像一開始的那樣,一臉懵逼的看著,這個請求是什麼鬼,那個方法是什麼鬼,task是什麼東西,如果沒有去看的朋友們可以去看看前面兩講玩轉ios開發 n...

iOS的Asyncsocket進行socket程式設計

iphone的標準推薦cfnetwork c庫程式設計.但是程式設計比較煩躁。在其它os往往用類來封裝的對socket函式的處理。比如mfc的casysncsocket.在iphone也有類似於開源專案.cocoa asyncsocket庫,官方 它用來簡化cfnetwork的呼叫.一.在專案引入a...

玩轉iOS開發 《iOS設計模式 觀察者模式》

文章轉至 這幾天在搗鼓新專案,在用通知中心的時候突然想到自己用了那麼久的通知中心,為啥不自己動手實現乙個呢?說幹就幹,於是乎就研究通知中心的原理,當然包括 kvo,這些都是基於觀察者模式 實現的,既然知道了原理,我們就do it 最後 工廠模式,如果覺得好的話,希望大家也可以打賞一下 嘻嘻 祝大家學...