Java利用UDP实现简单群聊

一、创建新项目
首先新建一个新的项目,并按如下操作

二、实现代码
界面ChatFrame类
package 群聊;
 
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
import java.net.InetAddress;
 
public abstract class ChatFrame extends JFrame {
    private JTextArea receiveArea = new JTextArea();//接收文本框,用来显示服务器发送过来的文本
    private JTextArea sendArea = new JTextArea();//发送文本框,用来显示当前用户要发送的文本
 
    private JButton sendBtn = new JButton("SEND");//发送按键
 
    public ChatFrame() {
        this.initFrame();//初始化窗口
        this.initComponent();//初始化组件
        this.initListener();//初始化监听器
        this.receive();//开启监听服务器线程,把接收到的文本显示在receiveArea中
    }
 
    // 初始化监听器
    private void initListener() {
        // 给发送按键添加监听器,当被点击时调用send()方法
        sendBtn.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent evt) {
                send();
            }
        });
 
        // 给发送文本框添加键盘监听器,当按下Ctrl+ENTER时调用send()方法
        sendArea.addKeyListener(new KeyAdapter() {
            public void keyPressed(KeyEvent e) {
                if(e.isControlDown()) {
                    if(e.getKeyCode() == KeyEvent.VK_ENTER) {
                        send();
                    }
         

  • 25
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
下面是Java实现UDP应答的示例代码: ```java import java.net.*; public class UdpServer { public static void main(String[] args) { try { // 创建一个DatagramSocket对象,监听指定端口 DatagramSocket serverSocket = new DatagramSocket(1234); System.out.println("服务器已启动,等待客户端请求..."); while (true) { // 创建一个DatagramPacket对象,用于接收客户端请求数据 byte[] receiveData = new byte[1024]; DatagramPacket receivePacket = new DatagramPacket(receiveData, receiveData.length); serverSocket.receive(receivePacket); // 从DatagramPacket对象中获取客户端请求数据 String request = new String(receivePacket.getData()); System.out.println("客户端请求数据:" + request.trim()); // 准备响应数据 String response = "已收到客户端请求"; byte[] sendData = response.getBytes(); // 创建一个DatagramPacket对象,用于发送响应数据到客户端 InetAddress clientAddress = receivePacket.getAddress(); int clientPort = receivePacket.getPort(); DatagramPacket sendPacket = new DatagramPacket(sendData, sendData.length, clientAddress, clientPort); // 发送响应数据到客户端 serverSocket.send(sendPacket); System.out.println("已发送响应数据到客户端:" + clientAddress.getHostAddress() + ":" + clientPort); } } catch (Exception e) { e.printStackTrace(); } } } ``` 上述代码中,创建了一个DatagramSocket对象来监听指定端口(这里是1234),然后进入一个无限循环,在循环中接收客户端的请求数据,并将响应数据发送回客户端。具体实现步骤如下: 1. 创建一个DatagramSocket对象,指定监听端口; 2. 进入一个无限循环,每次循环中执行以下步骤: 1. 创建一个DatagramPacket对象,用于接收客户端请求数据; 2. 从DatagramPacket对象中获取客户端请求数据; 3. 准备响应数据; 4. 创建一个DatagramPacket对象,用于发送响应数据到客户端; 5. 发送响应数据到客户端。 您可以根据需要修改代码中的端口号等参数。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值