埠:用來區分不同的電腦程式的標誌碼
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...