Java基于UDP的GUI界面简易聊天室课程实验(获取本机IP、IDEA同个程序运行两次设置方法)

本文介绍了使用Java实现基于UDP协议的GUI界面简易聊天室,讲解了项目思路、涉及的知识点和具体功能实现。通过多线程处理发送与接收,实现了即时通讯。还分享了获取本机IP地址的方法以及在IDEA中运行同个程序两次的设置技巧。
摘要由CSDN通过智能技术生成

1、效果图

在这里插入图片描述
在这里插入图片描述

2、项目开发

本程序使用到的所有类、方法以及内部类:

  • public class UDPChat extends JFrame{};
  • public class UDPChatFace extends JPanel implements ActionListener{}:
    • public void init(){};
    • private void sendMessage(byte[] data){};
    • private void send(){};
    • private class Receive extends Thread{};
    • public void actionPerformed(ActionEvent e) {};

2.1、项目阐述

基于UDP协议编写一个GUI界面的简易聊天室
开发软件:IDEA

2.2、项目思路

利用UDP协议进行信息的传输与接收,由于聊天室属于即时通讯,所以必须做到同时接收与发送,因此可以考虑利用多线程完成该目的。

2.3、项目涉及知识点

  • GUI界面知识
  • UDP协议
  • 多线程

2.4、UDP通信协议

  • 优点:传输速度快,安全性高
    原因:不同于TCP的三次握手协议,UDP是一个无状态的传输协议,因此传输数据非常快;由于没有TCP的确认机制、三次握手机制等多种机制,因此相对较为安全,但并不是绝对安全。
  • 缺点:不可靠,只负责发送,不负责一定“送”到
  • 适用于对数据传输速度要求较高,质量不高的场合,如:视频、通讯、游戏等

2.5、GUI界面设计

使用到的组件: JPanel、JScrollPane、JLabel、JTextField、JTextArea、JButton

public class UDPChatFace extends JPanel implements ActionListener {
   

    //创建变量
    JPanel panel_1;
    JPanel panel_2;
    JPanel panel_3;
    JScrollPane panel_2_1;//滚动面板显示聊天记录
    JPanel panel_2_2;

    JLabel label1;//监听
    JLabel label2;//ip
    JLabel label3;//端口

    JTextField textField_ip;//ip输入
    JTextField textField_port;//端口号输入

    JTextArea textArea_history;//聊天记录文本域
    JTextArea textArea_message;//输入文字信息文本域

    JButton button_concern;
    JButton button_send;
    JButton button_clear;

    //端口设置
    //一般设置在8000以上,8000以下的端口号大部分被占用
    private int localPort = 10001;//本地端口
    private int otherPort = 10002;//对方端口

    private String ip;

    String message;//输入框信息
    private DatagramSocket socket;


    public UDPChatFace(){
   
        init();
    }

    public void init(){
   
        //添加组件
        panel_1 = new JPanel();
        panel_2 = new JPanel();
        panel_3 = new JPanel();

        textArea_history = new JTextArea(40,68);//设置聊天记录框的大小
        textArea_history.setEditable(false);//设置聊天记录框不可输入
        textArea_message = new JTextArea(13,70);
        textArea_message.addKeyListener(new KeyAdapter() {
   
            @Override
            public void keyPressed(KeyEvent e) {
     //键盘监听事件,实现文本框输入后,按回车消息发送的功能
                if (e.getKeyCode() == KeyEvent.VK_ENTER){
   
                    if (textArea_message.getText().equals("")){
   
                        JOptionPane.showMessageDialog(panel_1,"不可发送空白信息!"); //弹窗
                        return;
                    }else {
   
                        send(); //发送消息
                    }
                }
            }
        });

        panel_2_1 = new JScrollPane(textArea_history); //将"聊天记录"输入框加入滚动面板中
        panel_2_1.setBorder(BorderFactory.createTitledBorder("聊天记录")
  • 14
    点赞
  • 58
    收藏
    觉得还不错? 一键收藏
  • 6
    评论
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值