網路程式設計的學習

2021-09-12 19:16:04 字數 2192 閱讀 6424

:用來區分不同的電腦程式的標誌碼

url:統一資源定位符,一種定位資源的主要訪問機制的字串,一般包括protocal/host/port/path/parameter/anchor等

我們開發的網路程式位於應用層,tcp和udp屬於傳輸層協議,要想在應用層使用傳輸層的協議,需要使用套接字,socket,使用套接字來起到分離的作用。

套接字:類似於傳輸層為應用層開的乙個小口,應用程式通過這個小口向遠端傳送資料或接收資料,小口中的傳輸過程不用關心,

基於tcp協議的socket程式設計

基於 udp協議的socket程式設計

通訊雙方需要建立連線

通訊雙方不需要建立連線

建立連線存在主次之分

通訊雙方完全平等

特點:

使用的是伺服器端datagramsocket.客戶端datagrampacket;

使用基於udp協議的socket網路程式設計實現:

不需要使用i/o流實現資料的傳輸 每個資料單元被統一封裝成資料報的方式,傳送方將資料報傳送到網路中,資料報在網路中去尋找目的地。

//客戶端          

//1.使用datagramsocket指定埠,建立接收端

datagramsocket socket = new datagramsocket(8888);

//2.準備容器 封裝成datagreampacket包裹

byte container = new byte[1024*10];

datagrampacket packet = new datagrampacket(container, container.length);

//3.阻塞時接收包裹receive(datagrampacket p)

socket.receive(packet);

//4.分析資料

byte data = packet.getdata();

int len = packet.getlength();

//伺服器端

//1. 使用datagramsocket指定埠 建立傳送端

datagramsocket socket = new datagramsocket(6666);

//2. 準備資料 轉成位元組陣列

string str = "學習學習學習";

byte bytes = str.getbytes();

//3. 封裝成datagrampacket包裹,需要指定目的地

datagrampacket packet = new datagrampacket(bytes, bytes.length,new inetsocketaddress("localhost", 8888));

//4. 傳送包裹send(datagrampacket p)

socket.send(packet);

//5. 釋放資源

socket.close();

特點:

使用的是伺服器端serversocket,客戶端socket

伺服器端執行流程:

建立serversocket(int port)物件

在socket上監聽客戶端的連線請求

阻塞、等待連線的建立

接受並處理請求資訊

將處理結果返回給客戶端

關閉流和socket物件

經典流程:

建立serversocket物件-->阻塞式等待連線accept-->輸入輸出流操作-->釋放資源

public static void main(string args) throws unknownhostexception, ioexception
public static void main(string args) throws ioexception
客戶端執行流程:

建立socket(string host,int port)物件

向伺服器傳送請求連線

向伺服器傳送服務請求

接受服務結果

關閉流和socket物件

經典流程:

建立socket物件-->操作輸入輸出流-->釋放資源

網路程式設計學習

1 64 bit系統的位址空間足夠大,不會出現沒有足夠的連續空間這種情況,不用擔心記憶體碎片問題,再說伺服器不是7 24執行的。linux kernel也大量用到了動態記憶體分配。既然作業系統核心都不怕動態分配記憶體造成碎片,應用程式為什麼要害怕?2 現在的記憶體分配器 malloc及其第三方實現 ...

網路程式設計學習

在了解網路程式設計前,我們需要了解一下套接字 socket 套接字是通訊的基石,是支援tcp ip協議的路通訊的基本操作單元。可以將套接字看作不同主機間的程序進行雙間通訊的端點,它構成了單個主機內及整個網路間的程式設計介面。socket 套接字 可以看成是兩個網路應用程式進行通訊時,各自通訊連線中的...

網路程式設計學習 tcp ip程式設計

tcp 不記錄訊息邊界 udp 記錄訊息邊界 用到的結構體 struct sockaddr un 例子 struct sockaddr un serveraddr serveraddr.sun family af unix server socket strcpy serveraddr.sun pa...