使用UDP协议来进行通信

题目

使用UDP协议进行服务器和客户端之间的通信,将客户端发送的消息用键盘录入

分析

UDP协议不需要建立连接,因此在开启程序的时候需要先开启服务器,之后再开启客户端,否则将不会发送成功,详细步骤在代码中已经注释。

程序代码

服务器接收消息

package com.company.deno;


import java.io.IOException;
import java.net.DatagramPacket;
import java.net.DatagramSocket;


public class server {
    public static void main(String[] args) throws IOException {
        //创建UDP服务器对象
        DatagramSocket ds = new DatagramSocket(8888);
        byte[] bytes = new byte[1024];
        //创建数据报包,作用用来接收数据
        DatagramPacket dp = new DatagramPacket(bytes, bytes.length);
        //接受数据
        System.out.println("服务器已开启,等待连接...");
        ds.receive(dp);//服务器在这里停着呢 等待接受数据
        //取出数据包中的数据
        byte[] data = dp.getData();
        int length = dp.getLength();
        String message = new String(data, 0, length);
        //获取发送者的ip
        String ip = dp.getAddress().getHostAddress();
        System.out.println("IP: " + ip + '\n'+"消息:" + message);
        ds.close();
    }
}

客户端发送消息

package com.company.deno;


import java.io.IOException;
import java.net.*;
import java.util.Scanner;

public class client {
    public static void main(String[] args) throws IOException {
        //创建客户端对象
        DatagramSocket ds = new DatagramSocket();
        //创建字节数组
        Scanner sc = new Scanner(System.in);
        System.out.println("请输入消息:");
        String str = sc.nextLine();
        byte[] bytes = str.getBytes();
        int length = bytes.length;
        //获取ip地址对象
        InetAddress inetAddress = InetAddress.getByName("DESKTOP-54FG57A");
        //创建数据报包
        DatagramPacket dp = new DatagramPacket(bytes, length, inetAddress, 8888);
        //发送数据
        ds.send(dp);
        ds.close();
    }

}

运行结果

服务器

客户端

发布了68 篇原创文章 · 获赞 0 · 访问量 1167

猜你喜欢

转载自blog.csdn.net/weixin_45849948/article/details/105205142