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();
        }
    }
}

 

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值