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法式設計有所贊助。