---------------------- asp.net+unity開發、.net培訓、期待與您交流! ----------------------
1、資料流套接字
資料流式是一種面向連線的
socket
,針對於面向連線的
tcp服務應用,使用使用比較高質量的
tcp(1)
tcp提供可靠的連線。當
tcp向另外一端傳送資料時,它要求對方返回乙個確認回答。如果沒有收到確認,則會等待一段時間後重新傳送,在數次重發失敗後,
tcp才會放棄傳送。(2
)tcp
為傳送的資料進行排序。比如傳送
2048
個位元組,
tcp可能將它分成大小為
1024
的兩個段,並分別進行編號「
1」和「
2」。接收段將根據編號對資料進行重新排序並判斷是否為重複資料。(3
)tcp
提供流量控制。它會通知對方自己能夠接受資料的容量,稱為視窗,這樣就確保不會發生緩衝區溢位的情況。(4
)tcp
的連線是雙工的。在給定連線上的應用程序在任何時刻既可以傳送也可以接受資料。
在tcp
中相當重要的乙個概念就是建立乙個
tcp連線,也就是三次握手過程,理解它對於今後程式設計有非常大的幫助。下面我們就詳細學習一下這個過程。(1
)伺服器必須準備好接收外來的連線。由呼叫
socket
、bind
和listen
函式完成,稱為被動開啟(
passive open)。(
2)客戶通過呼叫
connect
進行主動開啟(
active open
)。客戶
tcp傳送乙個
syn(同步)包,以告知伺服器客戶在這次連線中要傳送資料的初始序列號。
syn資料報不包含資料,只有乙個
ip頭、乙個
tcp頭及其選項。(3
)伺服器確認客戶的
syn,同時自己也傳送乙個
syn資料報,告知客戶它自己在這次連線中傳送資料的初始序列號。伺服器分別對客戶
syn的應答
ack,以及自己的
syn資料。(4
)客戶返回對伺服器
syn的確認應答
ack。
許多廣泛應用的程式都使用資料流套接字,比如
telnet
、www
瀏覽器使用的
協議等。
2、資料報套接字
資料報式
socket
是一種無連線的套接字,對應於無連線的
udp服務應用,相應協議是
udp。
udp提供無連線的服務,就是說
udp客戶與伺服器不必保持長期的連線關係。例如,乙個
udp客戶可以建立乙個套接字並傳送乙個資料報給乙個伺服器,然後可以立即用同乙個套接字傳送另乙個資料報給另乙個伺服器。
udp所面臨的問題就是缺乏可靠性。因為它沒有例如確認、超時重傳等複雜機制,因此它不能保證資料的到達以及到達的次序。
那麼我們在傳送過程中,如果資料丟失了該怎麼辦呢?其實每個程式在
udp上都有自己的協議,如果在一定時間內沒有收到對方發回的確認應答,它將重新傳送,直到得到
ack。
udp實現過程比較簡單,因此在一定程度上效率較高,對於一些資料量小,無須互動的通訊情況還是適用的。使用
udp的應用程式有:
tftp
、bootp等。3
、原始套接字
除了上面兩種常用的套接字型別外,還有一類原始套接字(
raw socket
),在某些網路應用中擔任重要角色。比如我們平時想看一看網路是否通達,就用
ping
命令測試一下。
ping
命令用的是
icmp
協議,因此我們不能通過建立乙個
sock_stream
或sock_dgram
來傳送這個包,而只能自己親自來構建
icmp
包來傳送。另外一種情況是,許多作業系統只實現了幾種常用的協議,而沒有實現其它如
ospe
、ggp
等協議。如果自己有必要編寫位於其上的應用,就必須借助
raw socket
來實現,這是因為作業系統遇到自己不能夠處理的資料報,就將這個包交給
raw socket
處理。raw socket
的作用主要在三個方面:(1
)通過raw socket
來接收和傳送
icmp
協議包。(2
)接收發向本機的但
tcp/ip
棧不能夠處理的
ip包。(3
)用來傳送一些自己指定源位址特殊作用的
ip包。
---------------------- asp.net+unity開發、.net培訓、期待與您交流! ----------------------
黑馬程式設計師 IO流
asp.net unity開發 net培訓 期待與您交流!io流可以按流向分為輸入流,輸出流。按讀取資料的型別可分為位元組流和字元流。字元流 輸出字元流 writer 字元寫入流的抽象 filewriter 字元寫入流 bufferedwriter 字元寫入流緩衝區 outputstreamwrit...
黑馬程式設計師 this關鍵字
asp.net android io開發s net培訓 期待與您交流!在呼叫方法的時,this可以自動的傳遞乙個隱含引數,該引數是對呼叫物件 及方法呼叫所在的物件 的引用,該引用被稱為this。因此this指向方法正在操作的物件。為理解this的含義首先檢視乙個程式,它建立乙個名為rect的類封裝的...
黑馬程式設計師 this關鍵字
this 代表所在函式所屬物件的引用,簡單來說哪個物件在呼叫this所在的函式,this就代表哪個物件。this應用 1 用於區分區域性變數和成員變數同名情況。2 當定義類中功能時,該函式內部要用到呼叫該函式的物件時 這時用this來表示這個物件。當不加this關鍵字且成員變數和區域性變數同名時,則...