• 大小: 487KB
    文件类型: .rar
    金币: 1
    下载: 0 次
    发布日期: 2021-06-14
  • 语言: Java
  • 标签: udp  

资源简介

基于Java udp协议实现的图形界面的多人聊天室 ps:客户端登陆是输入的用户名只能是两个字的姓名

资源截图

代码片段和文件信息

package Chat;

import java.awt.EventQueue;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.WindowEvent;
import java.net.DatagramPacket;
import java.net.DatagramSocket;
import java.net.InetAddress;
import java.util.Vector;

import javax.swing.Jframe;
import javax.swing.JTextArea;
import javax.swing.JList;
import javax.swing.JOptionPane;
import javax.swing.JLabel;
import javax.swing.JTextField;
import javax.swing.JButton;
import javax.swing.JScrollPane;

/**
 * ChatClient实现网络聊天室的客户端,功能是用户登陆后可以选择聊天对象进行聊天,也可以接收服务端的广播信息。
 * @author 罗成东 201524132129
 * Date:2018-6-9
 * Copyright ©2018lcd.AllRight Reserved.
 * @version 1.0
 * @since JDK1.8
 */
public class ChatClient extends Jframe implements ActionListener {


private static final long serialVersionUID = 1L;
private Jframe frame;
private JTextField intputField = new JTextField();
private static JTextArea chatcontent = new JTextArea();
private JButton btnsend = new JButton(“发送“);
private JButton btnexit = new JButton(“退出“);

//构造一个Vector用于存储在线的用户
private static Vector v = new Vector();
private static JList user = new JList(v);

//得到一个1000-9999的随机数,用于客户端的端口号。
static int port = (int) (Math.random() * (9999 - 1000 + 1)) + 1000;

//用户的姓名
String username;
//标识发送登陆消息数据流的信息头
private static String load = “登陆“;
//标识发送聊天消息数据流的信息头
private static String message = “消息“;
//标识发送退出消息数据流的信息头
private static String exit = “退出“;
//标识发送私聊消息数据流的信息头
private static String special = “私聊“;
//接收登陆消息数据的开始标志
private static String head = “head“;
//接收登陆信息数据的结束标志
private static String tail = “tail“;

/**
 * main方法的功能:应用程序的唯一入口
 * @param args String命令行参数的数组
 * @throws Exception
 */
public static void main(String[] args) throws Exception {
EventQueue.invokeLater(new Runnable() {
public void run() {
try {
ChatClient window = new ChatClient();
window.frame.setVisible(true);
} catch (Exception e) {
e.printStackTrace();
}
}
});
//接收客户端发送的信息
DatagramSocket ds = new DatagramSocket(port);
receive(ds);

}

/**
 * ChatClient方法的功能:类的构造函数
 * @throws Exception
 */
public ChatClient() throws Exception {
username = JOptionPane.showInputDialog(“输入用户名:“);
initialize();
//把登陆到本客户端的用户名和本客户端的端口号发送到服务端
Send((load + Integer.toString(port) + username).getBytes());

}

/**
 * initialize方法的功能:应用程序的界面初始化和按钮的监听事件
 */
private void initialize() {

frame = new Jframe();
frame.settitle(username);
frame.setBounds(100 100 850 400);
frame.setDefaultCloseOperation(Jframe.EXIT_ON_CLOSE);
frame.getContentPane().setLayout(null);
frame.addWindowListener(new java.awt.event.WindowAdapter() {
@Override
public void windowClosing(WindowEvent e) {
try {
exitsystem();
} catch (Exception e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----

     文件      12788  2018-06-11 14:34  聊天室\程序jar包\ChatClient.jar

     文件      12788  2018-06-11 14:34  聊天室\程序jar包\ChatSever.jar

     文件     458932  2018-06-11 12:14  聊天室\程序截图.docx

     文件       8380  2018-06-11 08:08  聊天室\程序源代码\ChatClient.java

     文件       8924  2018-06-11 08:10  聊天室\程序源代码\ChatServer.java

     文件      85749  2018-06-11 14:30  聊天室\说明文档.docx

     目录          0  2018-06-11 14:36  聊天室\程序jar包

     目录          0  2018-06-11 11:23  聊天室\程序源代码

     目录          0  2018-06-11 14:30  聊天室

----------- ---------  ---------- -----  ----

               587561                    9


评论

共有 条评论