基于java实现的UDP多用户聊天应用

这篇博客分享了一次计算机网络课程设计的经验,作者用Java实现了基于UDP的多用户聊天应用。程序包括客户端的Setusername.java和Client.java,以及服务器端的User.java和MultiThreadServer.java,通过多线程处理多个用户连接。欢迎大家提出改进意见。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

第一次写博客,还请大家多多指教

因为最近做了一个关于计算机网络的课程设计,是一个多用户聊天软件,实现过程比较简单,现在就拿来和大家分享一下,如果程序有什么不正确的地方希望大家多多提点意见

谢谢大家

以下是具体实现的程序代码

客户端程序:

1.用户运行的第一个界面,用于设置用户名

Setusername.java

package zhonghui.client;

import java.awt.BorderLayout;
import java.awt.FlowLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JTextField;

public class Setusername extends JFrame{
	  
	private JButton jbt = new JButton("进入聊天室");
	  private JTextField jtfname= new JTextField(8);
	
	 public static void main(String[] args) {
		    
		  new Setusername();
	  }
	 public Setusername(){
		 final JPanel p1 = new JPanel();
		 p1.setLayout(new BorderLayout());
		 p1.add(new JLabel("输入用户名"), BorderLayout.WEST);
		 p1.add(jtfname, BorderLayout.CENTER);
		 jtfname.setHorizontalAlignment(JTextField.LEFT);
		 p1.add(jbt, BorderLayout.EAST);
		 p1.setLayout(new FlowLayout(FlowLayout.LEFT,10,20));
		 p1.setSize(300, 100);
		 setLayout(new BorderLayout());
		 add(p1, BorderLayout.CENTER);
		 add(new JLabel("欢迎使用多人聊天系统  ,请输入用户名即可进入聊天室  "), BorderLayout.NORTH);
		 setTitle("多人聊天室 ");
		 setSize(350, 150);
		 setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		 setVisible(true);
		 
		 jbt.addActionListener(new ActionListener() {
				
				@Override
				public void actionPerformed(ActionEvent arg0) {
					// TODO Auto-generated method stub
					String username = jtfname.getText().trim();
					if(username.equals("")){
					}else{
						//关闭设置页面,启动聊天框页面
					setVisible(false);
					new Client(username);
					}
				}
			}); // Register listener
	 }
}
2.用户使用的聊天界面类,实现与服务器通信,本客户端连接的IP是127.0.0.1,即只要服务器在本地运行,即可进行通信

Client.java

package zhonghui.client;

import java.io.*;
import java.net.*;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.awt.*;
import java.awt.event.*;

import javax.swing.*;
import javax.swing.border.TitledBorder;

import net.sf.json.JSONArray;
import net.sf.json.JSONObject;


public class Client extends JFrame {
  /**
	 * 
	 */
	private static final long serialVersionUID = 1L;

// 接受消息框
  private JTextField jtf = new JTextField();
  
  private String 
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值