实现UDP通信(java)

目录

UDP的简单介绍

UDP的代码实现

总结


1.UDP的简单介绍

       UDP(User Datagram Protocol,用户数据报协议)是一种面向数据报的,无连接的通信协议。它主要作用与TCP/IP协议中的传输层中,它和TCP协议是这一层中最主要的两个协议。UDP主要用到数据报进行数据的传输与通信。

2.UDP的代码实现

服务端:

创建一个服务端

public class UDPserver{
}

在服务端中创建一个套接字,并绑定到指定端口同时输出一段文字(服务器启动,等待客户端连接...)

DatagramSocket ds = new DatagramSocket(8888);
System.out.println("服务器启动,等待客户端的连接...")

接下来写一个缓存区,减轻了数据读取的压力,使得读取的速率更高

byte[] receiveData = new byte[1024];

接下来要创建一个数据报并调用套接字来实现数据的数据接收,这些代码将写入while循环中已实现可以重复接收客户端的信息

  while (true) {
                    //创建接收数据报
                    DatagramPacket dp = new DatagramPacket(receiveData, receiveData.length);
                    //接收数据
                    ds.receive(dp);
                    //整理接收到的数据
                    String sMsg = new String(dp.getData(), 0, dp.getLength());
                    System.out.println("收到消息:" + sMsg);


                }

客户端:

创建一个客户端

public class UDPClient{

}

创建一个客户端套接字

DatagramSocket cs = new DatagramSocket();

使用Scanner实现客户端在键盘输入信息

Scanner scanner = new Scanner(System.in);

接下来指定服务器的地址和端口

 InetAddress serverAddress = InetAddress.getByName("localhost");
            int serverPort = 8888;

接下来创建一个数据报并调用套接字来实现数据的发送,这些代码将写入while循环中已实现可以重复向服务端发送信息


            while(true){
                System.out.println("客户端说:");
                String cMsg = scanner.nextLine();
                byte[] b = cMsg.getBytes("UTF-8");
                //创建数据报
                DatagramPacket dp = new DatagramPacket(b, b.length,serverAddress,serverPort);
                //发送信息
                cs.send(dp);



            }

完整代码:

服务端:


import java.net.DatagramPacket;
import java.net.DatagramSocket;

public class UDPServer {
    public static void main(String[] args) {

            try {
                //创建UDP套接字,并绑定到指定端口
                DatagramSocket ds = new DatagramSocket(8888);

                System.out.println("服务器启动,等待客户端的连接...  ");
                //创建缓冲区
                byte[] receiveData = new byte[1024];
                while (true) {
                    //创建接收数据报
                    DatagramPacket dp = new DatagramPacket(receiveData, receiveData.length);
                    //接收数据
                    ds.receive(dp);
                    //整理接收到的数据
                    String sMsg = new String(dp.getData(), 0, dp.getLength());
                    System.out.println("收到消息:" + sMsg);


                }


            }catch (Exception e){
                e.printStackTrace();
            }
        }
    }

客户端:

import java.net.DatagramPacket;
import java.net.DatagramSocket;
import java.net.InetAddress;
import java.util.Scanner;

public class UDPClient {
    public static void main(String[] args) {
        try {

            //创建UDP套接字
            DatagramSocket cs = new DatagramSocket();
            Scanner scanner = new Scanner(System.in);
            //指定服务器的地址和端口
            InetAddress serverAddress = InetAddress.getByName("localhost");
            int serverPort = 8888;


            while(true){
                System.out.println("客户端说:");
                String cMsg = scanner.nextLine();
                byte[] b = cMsg.getBytes("UTF-8");
                //创建数据报
                DatagramPacket dp = new DatagramPacket(b, b.length,serverAddress,serverPort);
                //发送信息
                cs.send(dp);



            }


        } catch (Exception e) {
            e.printStackTrace();
        }


    }
}

总结:

UDP(User Datagram Protocol)协议是Internet协议族中的一个无连接、不可靠的传输协议,它在TCP/IP模型的传输层中扮演着重要角色。UDP不提供像TCP那样的连接建立、数据确认、重传等机制,因此它具有更低的开销和更高的传输速度,适合实时性要求高的应用,如视频会议、在线游戏等。

---------------------------------------------------------------------------------------------------------------------------------

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值