網路程式設計 Socket

2021-08-07 10:43:58 字數 3402 閱讀 1311

網路程式設計:就是用來實現網路互聯的不同計算機上執行的程式可以進行資料交流。(分布式系統涉及到了)

二、網路程式設計三要素:

ipconfig:檢視本機ip

ping:測試連線

2、埠號:每個網路程式都需要繫結乙個埠號

傳輸資料的時候,除了確定發到哪台機器上,還要明確發到哪個程式。埠號的範圍:0-65535

網路程式設計應用就需要繫結乙個埠號,盡量使用1024以上。以下的基本被系統程式占用

常用埠號:

mysql:3306

oracle:1521

tomcat:8080

埠號是為了標識這個程式的

3、協議:

為計算機網路中進行資料交換而建立的規則,標準或約定的集合。

udp:

面向無連線,資料不安全,速度快,不區分客戶端與服務端

(給某個手機號發簡訊,不管你是否關機和是否為空號)

tcp:

面向連線(三次握手,四次揮手):資料安全,速度略低。分為客戶端和服務端

三次握手:客戶端先向發起請求,服務端響應請求,傳輸資料

三、socket

socket:套接字:學習網路程式設計,要圍繞socket進行學習。

1:程序標識

乙個主機的每乙個網路程序使用協議、埠進行標識。要唯一確定網路環境的某個程序,就同時需要主機和埠號。(ip+埠號)

2、多重協議標識

多重協議中需要指明是何種通訊協議。

乙個通訊程序的多重協議標識需要乙個三元組: 進行全域性唯一地標識。

乙個完整的網間程序通訊由兩個通訊程序組成,需要乙個五元組來標識:

2:通訊的兩端都有socket。

3、網路通訊其實就是socket間的通訊

4、資料在兩個socket之間,通過io流 進行傳輸。

5、socket在應用程式中建立,通過一種    繫結機制與驅動程式。

四、socket通訊**:

有兩台主機,每台主機比作港口,socket相當於港口的碼頭(乙個港口可能又若干個碼頭)。兩個港口之間通過船來傳遞貨物,船就相當於io流。

五、udp傳輸

1、傳送send

*建立datagramsocket,隨機埠號

*建立datagrampacket,指定資料,長度,位址,埠

*使用datagramsocket傳送datagrampacket

*關閉datagramsocket

(datagramsocket相當於碼頭,datagrampacket相當於貨櫃。)

public static void main(string args) throws socketexception,unknowhostexception
2、接受receive

*建立datagramsocket,指定埠號

*建立datagramepacket,指定陣列,長度

*使用datagramsocket接受datagrampacket

*從datagrampacket中獲取資料

*關閉datagramsocket

public static void main(string args) throws ioexception
(傳送和接受都是以位元組流形式的。)

現在接收方和傳送方已經準備就緒啦。我們可以使用dos視窗模擬一下資料的傳送的過程。首先先啟動接收方,然後再啟動傳送方。接下來,就能在接收方的dos視窗中看到:紅鯉魚與綠鯉魚與驢啦。

六、tcp傳輸

tcp和udp傳輸一樣都是兩台計算機進行通訊,都需要建立socket物件,區別在於udp只需要傳送端和接收端,不區分客戶端和服務端。而tcp嚴格區分客戶端和服務端。必須由客戶端首先先去連線服務端才能實現通訊。(服務端不能主動連客戶端)

jdk的net包下socket類表示客戶端,serversocket表示服務端。首先建立乙個serversocket物件,等待客戶端連線。客戶端建立乙個socket物件傳送連線請求。

客戶端的輸出流對應服務端的輸入流,服務端的輸入流對應客戶端的輸出流。就相當於**的麥克和聽筒。

1、客戶端

建立socket連線服務端(指定ip位址,埠號)通過ip位址找對應的伺服器

呼叫socket的getinputstream()getoutputstream()方法獲取和服務端相連的io流

輸入流可以讀取服務端輸出流寫出的資料

輸出端可以寫出資料到服務端的輸入流

public static void main(string args) throws unknownhostexception,ioexception
2、服務端

建立serversocket(需要指定埠號,監聽埠號

呼叫serversocket的accept()方法接受乙個客戶端請求,得到乙個socket

呼叫socket的getinputstream()和getoutputstream()方法獲取和客戶端相連的io流

輸入流可以讀取客戶端輸出流寫出的資料

輸出流可以寫出資料到客戶端的輸入流。

public static void main(string args) throws unknownhostexception,ioexception
優化後的**如下:

1、服務端

public static void main(string args) throws unknownhostexception,ioexception
2、客戶端

public static void main(string args) throws unknownhostexception,ioexception

網路程式設計 Socket程式設計

一 網路部分 1.ip 2.埠號 在網路協議中使用埠號識別主機上不同的程序,不同的埠對應於不同的服務 應用程式 3.協議 tcp二 socket部門socket通訊基本流程圖 根據socket通訊基本流程圖,總結通訊的基本步驟 伺服器端 第一步 建立乙個用於監聽連線的socket對像 第二步 用指定...

socket網路程式設計

首先認識乙個表示主機資訊的結構體 struct hostent h addrtype 這是表示主機所使用的位址型別的定義,在c語言winsock2.h標頭檔案中以 af 開頭的巨集定義就是它的值。如果使用的是ipv4,則值為 af inet 如果是ipv6,值為 af inet4 h length ...

Socket網路程式設計

socket 網路程式設計 在c free中建立乙個對話方塊工程,取名socket1,建立如下檔案結構 main.h ifndef main h define main h include bool winapi main proc hwnd hwnd,uint umsg,wparam wparam...