JAVA通过UDP协议进行网络通信


JAVA通过UDP协议进行网络通信
 

1、相对于TCP协议,UDP协议减少了建立通信的阶段,所以说,UDP的数据发送不是可靠的
 


 

package com.test.udp;
import java.net.DatagramPacket;
import java.net.DatagramSocket;
import java.text.SimpleDateFormat;
import java.util.Date;
public class UDPServerTest {
    public static void main(String[] args) {
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        DatagramSocket server = null;
        try {
            // 通过5050端口建立UDP服务端
            server = new DatagramSocket(5050);
            System.out.println(sdf.format(new Date()) + " UDP服务监听启动!");
            // 设置接收数据的缓冲区大小
            byte[] recvBuf = new byte[100];
            // 建立存放数据的数据报
            DatagramPacket recvPacket = new DatagramPacket(recvBuf, recvBuf.length);
            while (true) {
                // 建立服务端数据监听,此处阻塞
                server.receive(recvPacket);
                // 接收到数据后,取出数据
                String recvStr = new String(recvPacket.getData(), 0, recvPacket.getLength());
                System.out.println(sdf.format(new Date()) + " 从UDP客户端接收到消息:" + recvStr);
                System.out.println();
            }
        } catch (Exception e) {
            e.printStackTrace();
        } finally {
            server.close();
        }
    }
}

 

 

package com.test.udp;
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.net.DatagramPacket;
import java.net.DatagramSocket;
import java.net.InetAddress;
import java.text.SimpleDateFormat;
import java.util.Date;
public class UDPClientTest {
    public static void main(String[] args) {
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        DatagramSocket client = null;
       
        try {
            client = new DatagramSocket();
           
            BufferedReader brIn = new BufferedReader(new InputStreamReader(System.in));
            // 从系统标准输入读入一字符串
            String readline = brIn.readLine();
            // 若从标准输入读入的字符串为 "bye"则停止循环
            while (!readline.equals("bye")) {
                byte[] sendBuf = readline.getBytes();
                InetAddress addr = InetAddress.getByName("127.0.0.1");
                int port = 5050;
                DatagramPacket sendPacket = new DatagramPacket(sendBuf, sendBuf.length, addr, port);
                client.send(sendPacket);
                System.out.println(sdf.format(new Date()) + " 向UDP服务端发送消息:" + readline);
                System.out.println();
                System.out.print("请输入需要发送给UDP服务端的消息:");
                readline = brIn.readLine();
            }
        } catch (Exception e) {
            e.printStackTrace();
        } finally {
            client.close();
        }
    }
}

 

你可能感兴趣的:(java)