千鋒長沙java培訓分享之Socket編程
socket編程一般指的就是網絡編程,常見的服務端和客戶機都是必不可少的,今天千鋒長沙java培訓就來給大家介紹一下socket編程中常見的概念問題。
一、常見傳輸協議
1、tcp協議
TCP (Transmission Control Protocol,傳輸控制協議):“面向連接 ”,可靠的、基于字節流的運輸層(Transport layer)通信協議 。
面向連接服務要經過三個階段:數據傳數前,先建立連接,連接建立后再傳輸數據,數據傳送完后,釋放連接。面向連接服務,可確保數據傳送的次序和傳輸的可靠性。
2、udp協議
UDP(User Datagram Protocol ,用戶數據包協議):“面向非連接”,在正式通信前不必與對方先建立連接,不管對方狀態就直接發送。
無連接服務的特點是:無連接服務只有傳輸數據階段。消除了除數據通信外的其它開銷。
3、IP協議
IP( Internet Protocol ):計算機網絡相互連接進行通信而設計的協議。互聯網地址或Internet地址。是用來唯一標識互聯網上計算機的邏輯地址。
InetAddress代表了一個網絡目標地址對象,封裝了主機名和數字類型的地址信息。
InetAddress ia=InetAddress.getLocalHost(); //獲得本機IP地址情況
System.out.println(ia.getHostName()); //得到主機名
System.out.println(ia.getHostAddress()); //得到主機地址
InetAddress ia2=InetAddress.getByName("T1"); //通過主機名獲得信息
System.out.println(ia2.getHostAddress());
InetAddress ia3=InetAddress.getByAddress(new byte[]{(byte)192,(byte)168,0,86}); //通過主機IP獲得信息
System.out.println(ia3.getHostName());
InetAddress ia4=InetAddress.getByName("http://www.163.com"); //根據域名到DNS查詢Ip
System.out.println("163 IP:"+ia4.getHostAddress());
二、URL實現網頁靜態化
類 URL 代表一個統一資源定位符,它是指向互聯網“資源”的指針。利用他可以獲得網絡資源,讀取WWW服務器上的數據。
這里我們將讀取到的數據轉換為流,然后保存到本地(類似網頁靜態化)。
BufferedReader br=null;FileWriter fw=null;
try {
URL u=new URL("http://mail.163.com/"); //獲得網絡資源
InputStream fis=u.openStream(); //獲得URL的輸入數據流
InputStreamReader fr=new InputStreamReader(fis);
br=new BufferedReader(fr); //讀取并封裝字符流
fw=new FileWriter("D://163.html"); //保存為文件
String s=null;
while((s=br.readLine())!=null){ //操作
System.out.println(s);
fw.write(s);
}
} catch (MalformedURLException e) {e.printStackTrace();} catch (IOException e) {e.printStackTrace();}finally{
try {
br.close();fw.flush();fw.close();} catch (IOException e) {e.printStackTrace();}
}
三、TCP套接字
為了區別不同的應用程序進程和連接,許多計算機操作系統為應用程序與TCP/IP協議交互提供了稱為套接字(Socket)的接口。
Socket可以看作是通信連接兩端的收發器。
套接字,Socket是網絡上運行的程序之間雙向通信鏈路的端點。
Socket所要完成的通信就是基于連接的通信,建立連接所需的程序分別運行在客戶端和服務器端。
套接字連接就是客戶端的套接字對象和服務器端的套接字對象通過輸入/輸出流連接在一起。
2、TCP套接字
在Java中,套接字(通信端點)被抽象為類,我們只需要創建Socket類的對象,就可以使用套接字。
Socket中有輸入輸出流對象,同時能實現服務器之間的數據傳輸。
3、Socket部分
通過將這3個參數結合起來,與一個Socket綁定,應用層就可以和傳輸層通過套接字接口,區分來自不同應用程序進程或網絡連接的通信,實現數據傳輸的并發服務。
一個程序(Program B )將一段信息寫入Socket中,該Socket將這段信息發送給另外一個Socket(Program A)中,使這段信息能傳送到其他程序中。
Socket工作步驟:
a、建立連接
在服務器端通過指定一個用來等待的連接的端口號創建一個 ServerSocket實例.
在客戶端通過主機和端口號創建一個 socket實例,連到服務器上.
ServerSocket類的accept方法使服務器處于阻塞狀態,等待用戶請求
b、數據通信
建立socket連接后,還應該建立輸入輸出數據流,客戶程序可以向Socket寫入請求,服務器程序處理請求,并把處理結果通過Socket返回給客戶端,完成通過虛擬通道的數據通信;
c、拆除連接
通信結束,將所建立的虛擬連接全部拆除。

猜你喜歡LIKE
最新文章NEW
相關推薦HOT
更多>>熱門推薦
零基礎必看的前端HTML+CSS教程
沸Java培訓新手實戰必備!單機版坦克大戰分步實現項目源碼
熱3種Javascript圖片預加載的方法詳解
熱長沙前端培訓:一招教你用vue3+canvas實現坦克大戰
新互聯網涼了?參加長沙Java培訓能找到工作嗎?
長沙Java培訓實戰項目,出游咨詢訂票系統開發流程
不參加長沙Java培訓能學會Java嗎?2022Java技能學習路線圖
千鋒長沙Java培訓分享之怎么學習Java集合?
千鋒長沙前端培訓分享之JavaScript面向對象編程思想詳解
千鋒長沙前端培訓分享之web前端的回流和重繪
千鋒長沙前端培訓分享之3種Javascript圖片預加載的方法詳解
千鋒長沙前端培訓分享之利用Jest測試React組件
千鋒長沙前端培訓分享之JavaScript中Slice的用例
千鋒長沙java培訓分享之Socket編程