资源简介

(1)用Java图形用户界面编写聊天室服务器端和客户端, 支持多个客户端连接到一个服务器。每个客户端能够输入账号。 (2)可以实现群聊(聊天记录显示在所有客户端界面)。 (3)完成好友列表在各个客户端上显示。 (4)可以实现私人聊天,用户可以选择某个其他用户,单独发送信息。 (5)服务器能够群发系统消息,能够强行让某些用户下线。 (6)客户端的上线下线要求能够在其他客户端上面实时刷新。

资源截图

代码片段和文件信息

package 聊天室;
import java.net.*;
import java.util.ArrayList;
import java.io.*;
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import javax.swing.text.DefaultCaret;
public class Client extends Jframe implements RunnableActionListenerItemListener{
private JTextArea  jta = new JTextArea();
private JTextField jtf = new JTextField();
private JButton jb=new JButton(“发送消息“);
private List online = new List();
private String nickName;
private Socket s = null;
private PrintStream ps = null;
private BufferedReader br = null;
    private JScrollPane jsp=new JScrollPane(jta);
    private String msg =new String();
    private ArrayList siliaoname=new ArrayList();
    private String msg2 = new String();
    private String ip;
    private int port;
    private SocketAddress addr;
    public void itemStateChanged(ItemEvent e) {
if(e.getSource()==online)
{

}

}
    
public Client() throws Exception{
    jsp.setVerticalScrollBarPolicy(
     JScrollPane.VERTICAL_SCROLLBAR_ALWAYS);
    online.addItemListener(this);
    online.addActionListener(this);
    getContentPane().add(jsp BorderLayout.CENTER);
getContentPane().add(jtfBorderLayout.SOUTH);
getContentPane().add(onlineBorderLayout.EAST);
jtf.setBackground(Color.WHITE);
jta.setWrapstyleWord(true);
jta.setFont(new Font(“微软雅黑“Font.BOLD25));
jtf.setFont(new Font(“微软雅黑“Font.BOLD25));
jtf.addActionListener(this);
jta.setEditable(false);
jta.setLineWrap(true);
jb.setBounds(490 0 100 38);
jtf.add(jb);
jb.setVisible(true);
        jb.addActionListener(this);

DefaultCaret caret = (DefaultCaret)jta.getCaret();//跟着进度条移动
caret.setUpdatePolicy(DefaultCaret.ALWAYS_UPDATE);
this.setSize(600600);

setDefaultCloseOperation(DO_NOTHING_ON_CLOSE);
addWindowListener(new WindowAdapter(){
public void windowClosing(WindowEvent e) {
int option= JOptionPane.showConfirmDialog(
Client.this “确定退出聊天室? “ “提示 “JOptionPane.YES_NO_OPTION);
if(option==JOptionPane.YES_OPTION)
if(e.getWindow() == Client.this)
{try {
        ps.println(“EXIT#“+ nickName);

System.exit(0);
}catch(Exception exit) {}
}
return ;
}
});

this.setVisible(true);
this.setLocationRelativeTo(null);
ip=“127.0.0.1“;
port=9999;
try {
nickName = JOptionPane.showInputDialog(Client.this“请输入您的账号“);
while(nickName.equals(““)) {
JOptionPane.showMessageDialog(
Client.this “账号不能为空 “ “错误 “JOptionPane.YES_NO_OPTION);
nickName = JOptionPane.showInputDialog(Client.this“请输入您的账号“);
}
}catch(Exception e) {
System.exit(0);
}
try {
s = new Socket();
addr=new InetSocketAddress(ipport);
s.connect(addr1000); 
}catch(Exception e) {
JOptionPane.showMessageDialog(
Client.this “服务器暂未开放 “ “提示 “JOptionPane.YES_NO_OPTION);
System.exit(0);

}

ps = new PrintStream(s.g

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----
     文件        4503  2019-05-25 09:58  Server.java
     文件        7782  2019-05-25 09:58  Client.java

评论

共有 条评论