程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> JAVA編程 >> JAVA綜合教程 >> 網絡編程之簡單總結,網絡編程總結

網絡編程之簡單總結,網絡編程總結

編輯:JAVA綜合教程

網絡編程之簡單總結,網絡編程總結


一、網絡編程中的重要的類

1、InetAddress:互聯網協議(IP)地址   封裝計算機的IP地址和DNS(域名解析),沒有端口,構造器私有化。通過相關方法得到。

例如:

public class InetDemo01 {

public static void main(String[] args) {
try {
InetAddress inetAddress=InetAddress.getByName("www.baidu.com");
//返回IP地址 127.0.0.1
System.out.println(inetAddress.getHostAddress());
//返回 localhost
System.out.println(inetAddress.getHostName());
} catch (UnknownHostException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}

}

}

2.URL類 :統一資源定位符

public class InetDemo02 {

public static void main(String[] args) {
try {
URL url = new URL("http://www.baidu.com:80/index.html#aa?uname=yym");
System.out.println(url.toString());
System.out.println("協議:"+url.getProtocol());
System.out.println("域名:"+url.getHost());
System.out.println("端口:"+url.getPort());
System.out.println("資源:"+url.getFile());
System.out.println("相對路徑:"+url.getPath());
System.out.println("錨點:"+url.getRef());
//有錨點時參數為空
System.out.println("參數:"+url.getQuery());

url = new URL("http://www.baidu.com/a/");
url = new URL(url,"b.txt");
System.out.println(url.toString());
} catch (MalformedURLException e) {

e.printStackTrace();
}

}

}

3、TCP協議:像電話 ,必須先建立連接,安全可靠,但是效率低;

     UDP協議:像短信,不用先建立連接 ,不安全,效率高;

UDP:類DatagramSocket   DatagramPacket

步驟:客戶端:                                                                                    服務器端:

1)創建客戶端DatagramSocket 類 + 端口(客戶端端口)                               1)創建服務器端DatagramSocket類+端口(服務器端端口)

2)准備數據  字節數組                                        2)准備接收容器  字節數組

3)打包數據DatagramPacket + 並指定服務器地址及端口                             3)封裝DatagramPacket

4)客戶端發送打包數據                                                                         4)服務器端接收數據

5)釋放資源                                                                                       5)拆包  + 分析數據

                                                                                                       6)釋放資源

客戶端:

public class MyClient {
public static void main(String[] args) throws IOException {
DatagramSocket datagramSocket = new DatagramSocket(6666); //創建客戶端DatagramSocket 類 + 端口(客戶端端口) 
String msg = "這是要發的數據";
byte[] data = msg.getBytes();                                                 //把要發的數據封裝成字節數組
DatagramPacket packet = new DatagramPacket(data, data.length, new InetSocketAddress("localhost", 8888));//將數據打包,並指定服務器地址及端口
datagramSocket.send(packet);                                                //客戶端發送打包數據
datagramSocket.close();                                                        //釋放資源
}
}

服務器端:

public class MyServler {
public static void main(String[] args) throws IOException {
DatagramSocket datagramSocket = new DatagramSocket(8888);              //創建服務器端DatagramSocket類+端口(服務器端端口)
byte[] container =new byte[1024];                                           //准備接收容器  字節數組 (保證一致性,發送的數據是用DatagramPacket封裝的字節數組)
DatagramPacket datagramPacket = new DatagramPacket(container, container.length);  //
datagramSocket.receive(datagramPacket);                             //服務器端接收數據
byte[] data =datagramPacket.getData();                                //拆包
int len = datagramPacket.getLength();                                   //分析數據
System.out.println(new String(data,0,len));
datagramSocket.close();                                                       //釋放資源

}

TCP協議: ServerSocket           Socket    客戶端和服務器端必須先建立連接 再發送或者接收數據(使用流) 必須先啟動服務器端,再啟動客戶端。

客戶端:Socket socket = new Socket("localhost",8888); //創建客戶端,並指定服務器端口

服務器端:

ServerSocket server = new ServerSocket(8888);//創建服務器端,並指定端口
Socket socket = server.accept(); //一旦連接此服務器的客戶端啟動,服務器端就會接收到

接收數據:Socket中的getInputStream();返回InputStream

發送數據:Socket中的getOutputStream();返回OutputStream

              

 

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved