对DatagramSocket的使用实例(java使用UDP进行数据传输)

Posted fangmr

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了对DatagramSocket的使用实例(java使用UDP进行数据传输)相关的知识,希望对你有一定的参考价值。

今天刚看懂的一点点东西,记录一下,方便自己回顾

客户端:

Client.java

 1 import java.io.IOException;
 2 import java.net.DatagramPacket;
 3 import java.net.DatagramSocket;
 4 import java.net.InetAddress;
 5 import java.net.SocketException;
 6 
 7 import org.json.JSONObject;
 8 
 9 public class Client 
10     
11     private static int port = 7799;//定义端口 数据报要用
12     
13     private static String IP = "127.0.0.1";//定义IP地址     数据报要用 
14     
15     private static DatagramPacket  packet = null;//定义要发送的数据报
16     
17     public static void main(String[] args) throws IOException
18         try(
19                 DatagramSocket socket = new DatagramSocket();//创建UDP套接字
20                 
21                 ) 
22             //将数据使用json编码发送
23             JSONObject jsonObject = new JSONObject();//创建json对象
24             jsonObject.put("test","hello");//给json对象插入数据
25             
26             //初始化要发送的数据报参数为 字节数组长度地址端口
27             packet = new DatagramPacket(new byte[0], 0, InetAddress.getByName(IP), port);
28             //数据报应该包含发送的目的地址和端口号
29             
30             byte[] test = jsonObject.toString().getBytes();//把json对象转换为字节码并存入字节数组中
31             
32             
33             packet.setData(test);//为要发送的数据包指定字节数组(要发送的数据)
34             
35             
36             socket.send(packet);//发送数据包
37         
38         catch (SocketException e) 
39             e.printStackTrace();
40         
41         
42     
43 

服务端

server.java

 1 import java.io.IOException;
 2 import java.net.DatagramPacket;
 3 import java.net.DatagramSocket;
 4 
 5 import org.json.JSONObject;
 6 
 7 public class server 
 8     private static int port = 7799;
 9     private String IP = "127.0.0.1";
10     //创建字节数组准备接收数据
11     private static byte[] test = new byte[1024];
12     private static DatagramPacket packet = new DatagramPacket(test,test.length);
13     
14     public static void main(String[] args) throws IOException 
15         
16         DatagramSocket socket = new DatagramSocket(port);//创建UDP套接字
17         socket.receive(packet);//接受数据报
18         
19         String hell = new String(test, 0, test.length);//将收到的数据存在字符串中
20         JSONObject jsonObject = new JSONObject(hell);//获得存储数据的字符串的json编码
21         System.out.println(jsonObject);
22         String str = jsonObject.getString("test");//获取json编码中test对象的值
23         System.out.println(str);
24     
25 
26 

 

以上是关于对DatagramSocket的使用实例(java使用UDP进行数据传输)的主要内容,如果未能解决你的问题,请参考以下文章

Java使用DatagramSocket

java中如何检测本机指定的UDP服务端口是不是被占用?并且自动分配一个可用udp端口;

DatagramSocket类 会发生线程阻塞的方法

DatagramSocket.send 线程安全吗?

在Java中的datagramsocket中获取源的IP地址

基于UDP协议的网络编程