關於TCP的流式服務

2021-06-12 20:04:40 字數 744 閱讀 4799

我們假設傳送方為hosta,接收方為hostb

hosta向hostb傳送一組資訊,假設hosta只需要乙個tcp報文分組即可將資料推向internet,

而接收方hostb則有可能會需要接收很多次,才能將資料接收完,然後將分片的資料排序好,再通過插口上傳到對應的應用層。

現在我們以極端的例子說明接收的實質:

hosta傳送乙個無符號長整型的資料 x 給hostb:

x=2147549442 d =1000 0000   0000 0001  0000 0001  0000 0010 b

那麼hostb在接收時是以下面方式接收的:

如圖所示

如果第乙個片中只有前十六個bit的資料(1000 0000   0000 0001  ),那麼下乙個片中將會得到後十六bit的資料( 0000 0001  0000 0010),按照圖中所示的放在接收buffer中,注意傳輸過程中是以byte為單位傳輸的(就是說乙個位元組的資料是不會出現在兩個分片當中的,這一點很重要)。

由於我們需要的是無符號長整型資料,而我們得到的是儲存在char型的陣列裡的資訊,所以呢,來個強制轉化那是必須的了,這樣我們就獲得了hosta傳個hostb的資料x=2147549442

以上是我自己的心得,如有錯誤之處,大家一起討論哈。。

對於網路位元組與主機位元組間的轉換參看我的上篇文章哈,這裡不是重點。

TCP流式套接字的基本程式設計

面向連線的客戶 伺服器程式工作模型 伺服器端程式 include pragma comment lib,ws2 32 include int main else 建立用於監聽的流式套介面s socket s socket af inet,sock stream,ipproto tcp if s in...

TCP流式套接字的select模式程式設計

選擇 select 模型是winsock中最常見的 i o模型。核心便是利用 select 函式,實現對 i o的管理!利用 select 函式來判斷某socket上是否有資料可讀,或者能否向乙個套接字寫入資料,防止程式在socket處於阻塞模式中時,在一次 i o 呼叫 如send或recv ac...

關於java8中的流式計算

流的出現是為了獲得更高的效能,但並不是說使用了流之後效能肯定會得到提公升,因此,我們需要謹慎使用。尷尬,你以為用了流式計算會快很多,然而測試結果並不是 public class streamtest public void setid int id public string getname pub...