Java实现UDP通信

Java实现UDP通信

环境

CentOS Linux release 8.1.1911 (Core)
java version "14.0.2" 2020-07-14

代码

服务器端的Server程序需先于客户端的Client程序运行

Client

其中,<host name>为服务器端IP地址,<port>为服务器程序监听的端口号

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

public class UDPClient {
    private String hostName;
    private int port;
    private DatagramSocket datagramSocket;


    public UDPClient(String hostName, int port) {
        this.hostName = hostName;
        this.port = port;

        try {
            datagramSocket = new DatagramSocket();
        } catch (SocketException e) {
            e.printStackTrace();
        }
    }

    public void sendMessage(String message) {
        byte[] buffer = message.getBytes();
        try {
            DatagramPacket datagramPacket = new DatagramPacket(buffer, buffer.length, InetAddress.getByName(hostName), port);
            datagramSocket.send(datagramPacket);
        } catch (IOException e) {
            e.printStackTrace();
        }
    }

    public static void main(String[] args) {
        final String HOST_NAME = "<host name>";
        final int PORT = <port>;
        UDPClient udpClient = new UDPClient(HOST_NAME, PORT);

        String message = "";

        while (!message.equals("exit")) {
            Scanner scanner = new Scanner(System.in);
            message = scanner.nextLine();

            udpClient.sendMessage(message);
        }
    }
}

Server

其中,<port>为程序监听的端口号,需与客户端设置的一致

import java.net.*;
import java.io.*;

public class UDPServer {
	private int port;
	private DatagramSocket datagramSocket;

	public UDPServer(int port) {
		this.port = port;
		try {
			datagramSocket = new DatagramSocket(port);
		} catch (SocketException e) {
			e.printStackTrace();
		}
	}

	public String receive() {
		byte[] buffer = new byte[1024];
		DatagramPacket datagramPacket = new DatagramPacket(buffer, buffer.length);

		try {
			datagramSocket.receive(datagramPacket);
		} catch (IOException e) {
			e.printStackTrace();
		}
		String message = new String(datagramPacket.getData(), 0, datagramPacket.getLength());
		return message;
	}

    public static void main(String[] args) throws Exception
	{
		String message = "";
		UDPServer udpServer = new UDPServer(<port>);
		while (!message.equals("exit")) {
			message = udpServer.receive();
			System.out.println(message);
		}
	}

}

云服务器安全组配置

安全组访问规则入方向协议类型需设置为UDP

测试结果

Client

Hello
This is Client!
exit

Server

Hello
This is Client!
exit

最后

  • 由于博主水平有限,不免有疏漏之处,欢迎读者随时批评指正,以免造成不必要的误解!
  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值