Java基於socket辦事完成UDP協定的辦法。本站提示廣大學習愛好者:(Java基於socket辦事完成UDP協定的辦法)文章只能為提供參考,不一定能成為您想要的結果。以下是Java基於socket辦事完成UDP協定的辦法正文
本文實例講述了Java基於socket辦事完成UDP協定的辦法。分享給年夜家供年夜家參考。詳細以下:
示例1:
吸收類:
package com.socket.demo; import java.io.IOException; import java.net.DatagramPacket; import java.net.DatagramSocket; public class UDPReceiveDemo { public static void main(String[] args) throws IOException{ System.out.println("吸收端啟動…………"); /* 2、樹立UDP的socket的辦事,必需明白一個端標語 3、創立數據包,用於貯存吸收到的數據,便利用數據包對象的辦法解析這些數據 4、應用DatagramSocket的receive辦法將吸收到的數據存儲到數據包中 5、經由過程數據包的辦法解析數據包中的數據 5、封閉socket辦事 */ //udpsocket辦事,應用DatagramSocket對象 DatagramSocket ds=new DatagramSocket(10002); //應用DatagramPacket將數據封裝到該對象中 byte[] buf=new byte[1024]; DatagramPacket dp=new DatagramPacket(buf, buf.length); //經由過程udp的socket辦事將數據包發送出去,經由過程send辦法 ds.receive(dp); //經由過程數據包的辦法解析數據包中的數據,好比,地址、端口、數據內容等 String ip=dp.getAddress().getHostAddress(); //String name=dp.getAddress().getHostName(); int port=dp.getPort(); String text=new String(dp.getData(),0,dp.getLength()); //System.out.println("-----"+ip+"-----"+name+"-----"+port+"-----"+text); System.out.println("-----"+ip+"----------"+port+"-----"+text); //封閉資本 ds.close(); } }
發送類:
package com.socket.demo; import java.io.IOException; import java.net.DatagramPacket; import java.net.DatagramSocket; import java.net.InetAddress; import java.net.SocketException; import java.net.UnknownHostException; public class UDPSendDemo { public static void main(String[] args) throws IOException{ System.out.println("發送端啟動…………"); /* * 1、創立udp傳輸的發送端 2、樹立UDP的socket的辦事 3、將要發送的數據封裝到數據包中 4、經由過程udp的socket辦事將數據包發送出去 5、封閉socket辦事 */ //udpsocket辦事,應用DatagramSocket對象 DatagramSocket ds=new DatagramSocket(8888);//監聽端口 //將要發送的數據封裝到數據包中 String str="udp傳輸演示,go"; //應用DatagramPacket將數據封裝到該對象中 byte[] buf=str.getBytes(); DatagramPacket dp= new DatagramPacket(buf, buf.length,InetAddress.getByName("192.168.1.100"),10002); //經由過程udp的socket辦事將數據包發送出去,經由過程send辦法 ds.send(dp); //封閉資本 ds.close(); } }
示例2:
吸收類:
package com.socket.demo; import java.io.IOException; import java.net.DatagramPacket; import java.net.DatagramSocket; public class UDPReceiveDemo2 { public static void main(String[] args) throws IOException{ System.out.println("吸收端啟動…………"); /* 2、樹立UDP的socket的辦事,必需明白一個端標語 3、創立數據包,用於貯存吸收到的數據,便利用數據包對象的辦法解析這些數據 4、應用DatagramSocket的receive辦法將吸收到的數據存儲到數據包中 5、經由過程數據包的辦法解析數據包中的數據 5、封閉socket辦事 */ //udpsocket辦事,應用DatagramSocket對象 DatagramSocket ds=new DatagramSocket(10003); while(true){ //應用DatagramPacket將數據封裝到該對象中 byte[] buf=new byte[1024]; DatagramPacket dp=new DatagramPacket(buf, buf.length); //經由過程udp的socket辦事將數據包發送出去,經由過程send辦法 ds.receive(dp);//壅塞式的。 //經由過程數據包的辦法解析數據包中的數據,好比,地址、端口、數據內容等 String ip=dp.getAddress().getHostAddress(); //String name=dp.getAddress().getHostName(); int port=dp.getPort(); String text=new String(dp.getData(),0,dp.getLength()); //System.out.println("-----"+ip+"-----"+name+"-----"+port+"-----"+text); System.out.println("-----"+ip+"----------"+port+"-----"+text); } //封閉資本 //ds.close(); } }
發送類:
package com.socket.demo; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.net.DatagramPacket; import java.net.DatagramSocket; import java.net.InetAddress; public class UDPSendDemo2 { public static void main(String[] args) throws IOException{ System.out.println("發送端啟動…………"); /* * 1、創立udp傳輸的發送端 2、樹立UDP的socket的辦事 3、將要發送的數據封裝到數據包中 4、經由過程udp的socket辦事將數據包發送出去 5、封閉socket辦事 */ //udpsocket辦事,應用DatagramSocket對象 DatagramSocket ds=new DatagramSocket(9999);//監聽端口 //將要發送的數據封裝到數據包中 //String str="udp傳輸演示,go"; BufferedReader bufr=new BufferedReader(new InputStreamReader(System.in));//鍵盤輸出 String line=null; //應用DatagramPacket將數據封裝到該對象中 while((line=bufr.readLine())!=null){ byte[] buf=line.getBytes();// DatagramPacket dp= new DatagramPacket(buf, buf.length,InetAddress.getByName("192.168.1.100"),10003); //經由過程udp的socket辦事將數據包發送出去,經由過程send辦法 ds.send(dp); if("886".equals(line)){ break; } } //封閉資本 ds.close(); } }
運轉後果圖以下:
吸收:
發送:
願望本文所述對年夜家的java法式設計有所贊助。