簡單的Socket介紹

2022-08-29 18:39:10 字數 3810 閱讀 8272

在這之前我們先了解一下一些關於網路程式設計的概念

網路程式設計從大方面說就是對資訊的傳送和接收,中間傳輸為物理線路的作用,程式設計人員可以不用考慮

網路程式設計最主要的工作就是在傳送端吧資訊通過規定好的協議進行組裝包,在接收端按照規定好的

協議進行包裝解析,從而提取對應的資訊,達到通訊的目的

網路程式設計的三要素

1.ip位址

唯一標識網路上的每一台計算機

構成:32位,由4個8位二進位制數組成

ip位址=網路位址加主機位址

2.埠

"埠"是英文port的意譯,可以認為是裝置與外界通訊交流的出口。埠可分為虛擬埠和物理埠,其中虛擬埠指計算機內部或交換機路由器內的埠,不可見。例如計算機中的80埠、21埠、23埠等。物理埠又稱為介面,是可見埠,計算機背板的rj45網口,交換機路由器集線器等rj45埠。**使用rj11插口也屬於物理埠的範疇。

兩類傳輸協議:tcp   udp

tcp就是tranfer control protocol的簡稱,是一種面向連線的保證可靠傳輸的協議。通過tcp協議傳輸,得到的是乙個順序的無差錯的資料流。傳送

方和接收方的成對的兩個socket之間必須建 立連線,以便在tcp協議的基礎上進行通訊,當乙個socket(通常都是server socket)等待建立連線時,另乙個

socket可以要求進行連線,一旦這兩個socket連線起來,它們就可以進行雙向資料傳輸,雙方都可以進行傳送 或接收操作。

udp就是use  datagram protocol的簡稱,是一種無連線的協議,每個資料報都是乙個獨立的資訊,包括完整的源位址或目的位址,它在網路上以任何可能的

路徑傳往目的地,因此能否到達目的地,到達目的地的時間以及內容的正確性都是不能被保證的。

什麼是socket

網路上的兩個程式通過乙個雙向的通訊連線實現資料的交換,這個連線的一端稱為乙個socket。

建立網路通訊連線至少要一對埠號(socket)。socket本質是程式設計介面(api),對tcp/ip的封裝,tcp/ip也要提供可供程式設計師做網路開發所用的介面,

這就是socket程式設計介面;http是轎車,提供了封裝或者顯示資料的具體形式;socket是發動機,提供了網路通訊的能力。

socket網路程式設計可以分為以下步驟

1.建立連線

2.開啟socket關聯的輸出流

3.資料流讀取資訊

4.關閉所有資料流和socket

socket實現原理機制

1.通訊兩端都有socket

2.網路通訊其實就是socket間的通訊

3.資料在兩個socket間通過io傳輸

socket 通訊模型

進行網路通訊時,socket需要借助資料流來完成資料流的傳遞工作

如何實現多客戶請求呢

採用多執行緒方式

乙個專門負責監聽的應用服務程式

乙個專門負責處理請求的執行緒程式

datagrampacket類

封裝了資料報的資料,資料長度,目標位址和目標埠

datagramsocket類

接收和傳送datagrampacket物件封裝好的資料報

基於udp協議的socket網路程式設計步驟

1.利用datagrampacket物件封裝資料報

2.利用datagramsocket傳送資料報

3.利用datagramsocket接收資料報

4.利用datagrampacket處理資料報

使用兩種協議實現簡單的對話功能(簡單的對話功能)

//2.監聽

socket s=sk.accept();

//打包資料

bufferedreader br=new bufferedreader(new

inputstreamreader(s.getinputstream()));

bufferedreader bw=new bufferedreader(new

inputstreamreader(system.in));

outputstream os=s.getoutputstream();

string line=null

;

while((line=br.readline())!=null

)

//釋放資源

s.close();

socket sk=new socket("192.168.111.1",11111);

bufferedreader br=new bufferedreader(new

inputstreamreader(system.in));

bufferedwriter bw=new bufferedwriter(new

outputstreamwriter(sk.getoutputstream()));

string line=null

;

while((line=br.readline())!=null

)

sk.close();

}

實現結果

HTML本質介紹 利用socket簡單解釋

html本質 一 1.html就是乙個人赤裸裸站在這裡,css就是給這個人穿上衣服,js讓這個人能動能走 2.html有很多標籤,不過,有些可能一生不用,常用的只有20個 3.css裡有幾種衣服,顏色,位置,等等 4.本質上就是python的socket服務端,而瀏覽器本質上就是socket客戶端,...

Socket程式設計客戶端原理簡單介紹

和服務端原理差不多,只是少了兩個步驟.客戶端 初始化套接字 wsastartup 建立套接字 socket 連線伺服器 connect 傳送 接收資料 send recv 關閉連線 closesocket,wsacleanup 1.初始化套接字,也是獲取套接字.wsadata是乙個存放套接字資訊的結...

socket 函式介紹

include include int socket int domain,int type,int protocol 含義 名稱含義 pf unix,pf local 本地通訊 pf x25 itu t x25 iso 8208協議 af inet,pf inet ipv4 internet協議 ...