套接字socket 概念和例項

2021-08-29 02:10:09 字數 1314 閱讀 5088

套接字 socket

套接字概念

套接字是一種程序間通訊的方法,不同於以往介紹的的程序通訊方法的是,它並不侷限於同一臺計算機的資源,例如共享內容或者訊息佇列。

一台機器上的程序可以使用套接字與另一台機器上的程序通訊。因此客戶與伺服器可以分散到網路中。

同一臺機器的程序間也可以用套接字通訊。

套接字的工作過程(伺服器端)

首先,伺服器應用程式通過socket系統呼叫建立乙個套接字,它是系統分配給該伺服器程序的類似檔案描述符的資源,不能與其他程序共享。

其次,伺服器程序使用bind系統呼叫個套接字命名。

接下來,伺服器程序開始等待客戶連線到這個命名套接字,呼叫listen建立乙個等待佇列,以使存放來自客戶的進入連線。

最後,伺服器通過accept系統呼叫來接受客戶的連線。此時,會產生乙個與原有的命名套接字不同的新套接字,它僅用於與這個特定的客戶端,而命名套接字則被保留下來繼續處理來自其他客戶的連線。

套接字的工作工程(客戶端)

呼叫socket建立乙個未命名套接字,將伺服器的命名套接字作為乙個位址來呼叫connect與伺服器建立連線。

一旦建立了連線,就可以像使用底層檔案描述符那樣來用套接字進行雙向的資料通訊。

套接字的屬性

套接字的特性由三個屬性決定:

型別(type)

協議(protocol)

套接字舉例

客戶端程式:建立乙個未命名的套接字,然後把它連線到伺服器套接字server_socket上,向伺服器寫乙個字元,再讀回經伺服器處理後的乙個字元。

伺服器端程式:首先建立乙個伺服器套接字,繫結乙個名字,然後建立乙個監聽佇列,接收來自客戶程式的連線。

client1.c

#include #include #include #include #include #include int main()

write(sockfd, &ch, 1);

read(sockfd, &ch, 1);

printf("char from server = %c\n", ch);

close(sockfd);

exit(0);

}

server1.c

#include #include #include #include #include int main()

}

套接字(二) Socket 套接字程式設計(附例項)

tcp ip位址家族統一的套接字位址結構定義如下 struct sockaddr in sin family 指定使用該套接字位址的位址家族。這裡必須設定為af inet,表示程式所使用的位址家族是tcp ip sin zero 8 主要是為了與第乙個版本的套接字位址結構大小相同而設定,實際使用時,...

socket網路程式設計和套接字

網路程式設計就是編寫程式使得兩台聯網的計算機進行資料的交換。套接字是網路傳輸時使用的軟體裝置,因此我們可以通過套接字來實現資料傳輸。由於網路程式設計中涉及到了兩台聯網計算機,所以我們將其分為伺服器端和客戶端,顧名思義,伺服器端是用來受理連線請求,客戶端是用來請求連線。注意 現在介紹的函式都是在lin...

套接字 Socket 定義

套接字介面可分為三類 公認埠 註冊埠 動態和 或私有埠 套接字,簡單的說就是通訊的兩方的一種約定,用套接字中的相關函式來完成通訊過程 應用層通過傳輸層進行資料通訊時,tcp和udp會遇到同時為多個應用程式程序提供併發服務的問題。多個tcp連線或多個應用程式程序可能需要通過同乙個 tcp協議埠傳輸資料...