套接字是一種通訊機制,憑藉這種機制,客戶/伺服器系統的開發工作既可以在本地單機上進行,也可以跨網路進行,linux所提供的功能(如列印服務,ftp等)通常都是通過套接字來進行通訊的,套接字的建立和使用與管道是有區別的,因為套接字明確地將客戶和伺服器區分出來,套接字可以實現將多個客戶連線到乙個伺服器。
套接字,也稱為bsd套接字,是支援tcp/ip的網路通訊的基本操作單元,可以看做是不同主機之間的程序進行雙向通訊的端點,簡單的說就是通訊的兩方的一種約定,用套接字中的相關函式來完成通訊過程。應用層通過傳輸層進行資料通訊時,tcp和udp會遇到同時為多個應用程式程序提供併發服務的問題。
簡單的舉例說明:socket=ip address+ tcp/udp + port。
一.面向連線的套接字socket通訊工作流程
為了實現伺服器與客戶機的通訊,伺服器和客戶機都必須建立套接字。伺服器與客戶機的工作原理可以用下面的過程來描述。
1.伺服器先用 socket 函式來建立乙個套接字,用這個套接字完成通訊的監聽。
2.用 bind 函式來繫結乙個埠號和 ip 位址。因為本地計算機可能有多個**和 ip,每乙個 ip 和埠有多個埠。需要指定乙個 ip 和埠進行監聽。
3.伺服器呼叫 listen 函式,使伺服器的這個埠和 ip 處於監聽狀態,等待客戶機的連線。
4.客戶機用 socket 函式建立乙個套接字,設定遠端 ip 和埠。
5.客戶機呼叫 connect 函式連線遠端計算機指定的埠。
6.伺服器用 accept 函式來接受遠端計算機的連線,建立起與客戶機之間的通訊。
7.建立連線以後,客戶機用 write 函式向 socket 中寫入資料。也可以用 read 函式讀取伺服器傳送來的資料。
8.伺服器用 read 函式讀取客戶機傳送來的資料,也可以用 write 函式來傳送資料。
9.完成通訊以後,用 close 函式關閉 socket 連線。
這裡寫描述
二. 面向無連線的套接字socket通訊工作流程
無連線的通訊不需要建立起客戶機與伺服器之間的連線,因此在程式中沒有建立連線的過程。進行通訊之前,需要建立網路套接字。伺服器需要繫結乙個埠,在這個埠上監聽接收到的資訊。客戶機需要設定遠端 ip 和埠,需要傳遞的資訊需要傳送到這個 ip 和埠上。
參考(
TCP UDP網路程式設計套接字
tcp通訊 socket介面介紹 服務端與客戶端的步驟不同的是客戶端第三步為傳送資料第四步為接收資料 五元組 源端ip,源端埠,對端ip,對端埠,協議 一條五元組可以標識一條通訊 其中對端ip和對端埠是為了確定網路中的內一台主機和程序,網路中的資料通過對端ip傳送給目標主機之後,再通過埠號確定需要傳...
python 網路程式設計學習 套接字socket
以前也學過套接字程式設計,這次想系統全面的學習下python網路程式設計的使用。做這個,為檢測進度,也為後續留下筆記和足跡。socket 常用函式 socket.gethostname socket.gethostbyname import socket host socket.gethostnam...
java 基於TCP UDP協議的Socket程式設計
基於tcp協議的socket程式設計 服務端 public class serverlogin 6.關閉輸入流 scoket.shutdowninput 7.向客戶端發訊息 info 歡迎您,登陸成功!os.write info.getbytes bufferedreader.close 8.關閉輸...