socket通常也稱作「套接字」,用於描述
ip位址和埠,是乙個通訊鏈的控制代碼。(其實就是兩個程式通訊用的。)
socket用於在兩個基於
tcp/ip
協議的應用程式之間相互通訊。最早出現在
unix
系統中,是
unix
系統主要的資訊傳遞方式。在
windows
系統中,
socket
稱為winsock
。兩個基本概念:客戶方和服務方。當兩個應用之間需要採用
socket
通訊時,首先需要在兩個應用之間(可能位於同一臺機器,也可能位於不同的機器)建立
socket
連線,發起呼叫連線請求的一方為客戶方,接受呼叫連線請求的一方成為服務方。客戶方和服務方是相對的,同乙個應用可以是客戶方,也可以是服務方。
在客戶方呼叫連線請求之前,它必須知道服務方在**。所以需要知道服務方所在機器的
ip位址或機器名稱,如果客戶方和服務方事前有乙個約定就好了,這個約定就是
port
(埠號)。也就是說,客戶方可以通過服務方所在機器的
ip位址或機器名稱和埠號唯一的確定方式來呼叫服務方。在客戶方呼叫之前,服務方必須處於偵聽狀態,偵聽是否有客戶要求建立連線。一旦接到連線請求,服務方可以根據情況建立或拒絕連線。連線方式有兩種,同步方式(
blocking
)和(noblocking).
客戶方傳送的訊息可以是文字,也可以是二進位制資訊流。當客戶方的訊息到達服務方埠時,會自動觸發乙個事件(
event
),服務方只要接管該事件,就可以接受來自客戶方的訊息了。
二、socket有兩種型別:
三、socket一般應用模式(服務端和客戶端)
服務端的socket(
至少需要兩個
):
客戶端的socket
socket通訊基本流程圖
socket的通訊過程
服務端:
客戶端:
伺服器端接到連線請求後,產生乙個新的socket
(埠大於
1024
)與客戶端建立連線並進行通訊,原偵聽
socket
繼續偵聽。
套接字socket(基礎網路知識)
網路程式設計 首先既然提到了網路程式設計,不得不提到計算機網路,我們雖然不用像專門學習計算機網路的人那樣學習的那麼細緻,但是該了解的還是要了解。網絡卡 為了將計算機加入網際網路,每台機器都應該有網絡卡,mac位址是全球唯一的,具體怎麼檢視mac位址先開啟命令列 輸入如下指令 ipconfig all...
Linux下socket程式設計基本知識
本文件主要講解了linux下socket程式設計的一些基本知識,主要包括套接字和位元組序的概念,以及一些常用的結構體和函式。linux網路程式設計 linux網路程式設計 人工智慧物聯網 linux中的網路程式設計通過socket介面實現,socket既是一種特殊的io,提供對應的檔案描述符。乙個完...
套接字的秘密 socket與sock
那麼如何把套接字和檔案聯絡起來呢?答案就是通過下面這張圖。其中task struct表示乙個程序,files struct中的fd array表示該程序開啟的所有描述符,對於套接字來說,與其他型別檔案的區別就是最終f op指向的是socket file ops。不過,可以看到,這裡的socket f...