Java基礎筆記-第十八記


java網絡編程二


Socket
網絡通信其實就是Socket間的通信
Socket就是爲網絡服務提供的一種機制。
通信的兩端都有Socket。
數據在兩個Socket間通過IO傳輸

UDP傳輸
DatagramSocket與DatagramPacket
建立發送端,接收端
建立數據包
調用Socket的發送接收方法
關閉Socket
發送端與接收端是兩個獨立的運行程序。

使用UDP方式,向目標機器發送數據,示例如下:
發送端

public static void main(String[] args) throws Exception {
		
		//1、創建UDP服務,通過DatagramSocket對象
		DatagramSocket dgs = new DatagramSocket();
		//2、確定數據,並封裝成數據包,DatagramPacket(byte[] buf,int length,InetAddress address,int port)
		byte[] buf = "udp is come on".getBytes();
		DatagramPacket dgp = new DatagramPacket(buf,buf.length,InetAddress.getByName("192.168.30.88"),10000);
		
		//3、通過Socket服務,將已有的數據包發送出去,通過send方法
		dgs.send(dgp);
		System.out.println("發送完畢");
		//4、關閉資源
		dgs.close();		
	}





接收端
編寫思路:
1、定義udpsocket服務
2、定義一個數據包,因爲要存儲接收到的字節數據
3、通過socket服務的receive方法將收到的數據存入已定義好的數據包中
4、通過數據包對象的特有功能,將這些不同的數據取出,打印在控制檯上。
5、關閉資源

	public static void main(String[] args) throws Exception {
		//1、創建UDPSocket,建立商戰
		DatagramSocket socket = new DatagramSocket(10000);
		//2、定義數據包,用於存儲數據
		byte[] buf = new byte[1024];
		DatagramPacket packet = new DatagramPacket(buf,buf.length);
		
		//3、通過服務的receive方法將收到數據存入數據包
		socket.receive(packet);
		
		//4、通過數據包的方法獲取其中的數據
		String ip = packet.getAddress().getHostAddress();
		String data = new String(packet.getData(),0,packet.getLength());
		int port = packet.getPort();
		System.out.println(ip+":"+data+":"+port);
		System.out.println("接收完畢");
		//關閉資源
		socket.close();
	}







發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章