5.28網絡編程中的UDP

package org.westos.網絡編程中的UDP編程;

import java.net.InetAddress;
import java.net.UnknownHostException;

/**
 * 網絡編程:
 *		TCP編程,UDP編程
 * 協議:
		UDP協議	--->UDP編程
			不需要建立連接通道的
			數據大小有限制
			不可靠連接
			執行效率高
		TCP協議	---->TCP編程
			需要建立連接通道
			數據大小無限制
			可靠連接
			執行效率低	
		打電話:看成TCP協議  建立連接通道
		發短信:UDP協議	不需要建立連接通道
 * */
/**
 * InetAddress類:
 * 		此類表示互聯網協議 (IP) 地址。 
 * 	方法:
 * 		public static InetAddress[] getAllByName(String host)
 * 			其中host可以是主機名也可以是IP地址的字符串表示形式
 * 		public String getHostName()獲取此 IP 地址的主機名。 
 * 		public String getHostAddress()返回 IP 地址字符串(以文本表現形式)。 
 * */
public class Text1 {
	public static void main(String[] args) throws UnknownHostException {
		//通過主機名返回一個IP地址對象
		InetAddress ip = InetAddress.getByName("DESKTOP-2N4QT71");
		//通過ip地址對象獲取IP地址,返回IP地址的字符串表示形式
		String ipAddress = ip.getHostAddress();
		System.out.println(ipAddress);
		//通過IP地址返回ip地址對象
		InetAddress ip2 = InetAddress.getByName("192.168.1.105");
		//通過ip地址對象獲取主機名,返回字符串
		String hostName = ip2.getHostName();
		System.out.println(hostName);
	}
}
package org.westos.網絡編程中的UDP編程;

import java.io.IOException;
import java.net.DatagramPacket;
import java.net.DatagramSocket;
import java.net.InetAddress;
/**
 * UDP編程:發送端
 * 1.使用DatagramScocket創建對象
 * 2.創建數據並打包,使用DatagramPacket
 * 		public DatagramPacket(byte[] buf,int length,InetAddress address,int port)
 * 		這裏需要創建本機的InetAdress類對象,使用主機名或者IP地址的文本形式
 * 3.調用發送函數
 * 4.關閉資源
 * */
public class Text2send {
	public static void main(String[] args) throws IOException {
		//創建Socket對象,使用的是DategramSoctet類
		DatagramSocket ds = new DatagramSocket(); 
		//創建數據並打包,使用DatagramPacket,構造方法如下
//		public DatagramPacket(byte[] buf,int length,InetAddress address,int port)
//		構造數據報包,用來將長度爲 length 的包發送到指定主機上的指定端口號。
		//構造方法前的準備,所需要傳遞的參數
		byte[] by = "這是來自發送端的數據".getBytes();
		int len = by.length;
		InetAddress add = InetAddress.getByName("DESKTOP-2N4QT71");
		int port = 10101;
		DatagramPacket dp = new DatagramPacket(by, 0, len, add, port);
		//調用發送函數
		ds.send(dp);
		//關閉資源
		ds.close();
	}
}
package org.westos.網絡編程中的UDP編程;


import java.io.IOException;
import java.net.DatagramPacket;
import java.net.DatagramSocket;


/**
 * UDP編程:接收端
 * 	1.創建Socket對象,使用DatagramSocket
 *  2.創建一個數據包,作爲接受容器,還是使用DatagramPacket
 *  3.調用DatagramSocket類對象接收方法
 *  4.解析數據
 *  5.將數據打印在控制檯中
 *  6.關閉資源
 * */
public class Text3receive {
	public static void main(String[] args) throws IOException {
		//創建Socket對象,還是使用DatagramSocket類,同時傳入端口號,需要與接收端相同
//		public DatagramSocket(int port)創建數據報包套接字對象並且將其綁定到本地主機上的指定端口
		DatagramSocket ds = new DatagramSocket(10101);
		//創建一個數據包,作爲接受容器,還是使用DatagramPacket
		//需要爲傳入參數做準備
		byte[] by = new byte[1024];
		int len = by.length;
		DatagramPacket dp = new DatagramPacket(by, len);
		//調用DatagramSocket類對象接收方法
		ds.receive(dp);
		//解析數據
		byte[] by2 = dp.getData();
		String sendIP = dp.getAddress().getHostAddress();
		//將數據打印在控制檯中
		String by2str = new String(by2, 0, len);
		System.out.println(sendIP);
		System.out.println(by2str);
		//關閉資源
		ds.close();
	}
}



發佈了61 篇原創文章 · 獲贊 6 · 訪問量 7907
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章