網路程式設計之socket程式設計

2021-09-02 15:22:03 字數 1041 閱讀 9701

大多數專案是在linux下開發伺服器端,而在windows下開發客戶端,需要經常在兩大平台之間進行切換,單獨學習一種平台沒有實踐意義。值得欣慰的是,兩大平台下的 socket 程式設計非常相似,並不會增加多少學習成本。網路程式設計就是編寫程式使兩台聯網的計算機相互交換資料。這就是socket的全部內容,socket程式設計遠比想象中的簡單很多。

學習socket,也就是學習計算機之間如何通訊,並編寫實用的程式。

1)sock_stream:流式套接字, 表示面向連線的資料傳輸方式。資料可以準確無誤地到達另一台計算機,如果損壞或丟失,可以重新傳送,但效率相對較慢。常見的 http 協議就使用 sock_stream 傳輸資料,因為要確保資料的正確性,否則網頁不能正常解析。

2)sock_dgram :資料報式套接字,表示無連線的資料傳輸方式。計算機只管傳輸資料,不作資料校驗,如果資料在傳輸中損壞,或者沒有到達另一台計算機,是沒有辦法補救的。也就是說,資料錯了就錯了,無法重傳。因為 sock_dgram 所做的校驗工作少,所以效率比 sock_stream 高。

3)sock_raw:原始套接字。

socket可以看成是使用者程序與核心網路協議棧的程式設計介面。socket不僅可以用於本機的程序間通訊,還可以用於網路上不同主機的程序間的通訊。

我們可以把socket底層的傳輸當做是底層的核心,對於上層的應用程式我們只需要關心套介面的存在,我們可以把套介面看成是程序間通訊的手段。

ipv4套介面位址位址通常也稱為「雙際套接字位址結構」,它以「sockaddr_in」命名

struct sockaddr_in;
sin_len:整個sockaddr_in結構體的長度;sin_family:指定該位址家族;sin_port:埠;sin_addr:ipv4的位址;sin_zero:暫不使用,一般將其設定為0;

通用位址結構用來指定與套接字關聯的位址。

struct sockaddr_in;

網路程式設計之Socket程式設計

對 tcp ip udp socket 程式設計這些詞你不會很陌生吧?隨著網路技術的發展,這些詞充斥著我們的耳朵。那麼我想問 1.什麼是tcp ip udp?2.socket在 呢?3.socket是什麼呢?4.你會使用它們嗎?什麼是tcp ip udp?tcp ip transmission co...

網路程式設計之socket程式設計

什麼是socket程式設計 我們經常把socket翻譯為套接字,socket是在應用層和傳輸層之間的乙個抽象層,它把tcp ip層複雜的操作抽象為幾個簡單的介面 用層呼叫已實現程序在網路中通訊。socket起源於unix,在unix一切皆檔案哲學的思想下,socket是一種 開啟 讀 寫 關閉 模式...

網路程式設計之socket

套接字 socket 是乙個抽象層,應用程式可以通過它傳送或接收資料,可對其進行像對檔案一樣的開啟 讀寫和關閉等操作。套接字允許應用程式將i o插入到網路中,並與網路中的其他應用程式進行通訊。網路套接字是ip位址與埠的組合。套接字起源於 20 世紀 70 年代加利福尼亞大學伯克利分校版本的 unix...