基于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 版权协议,转载请附上原文出处链接和本声明。