基于UDP的GUI简易聊天室
    
    
    
    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() 
版权声明:本文为ttbro原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
