没有合适的资源?快使用搜索试试~ 我知道了~
java源代码聊天室详解
4星 · 超过85%的资源 需积分: 10 16 下载量 90 浏览量
2011-09-02
08:27:12
上传
评论
收藏 829KB PDF 举报
温馨提示
java聊天室源代码,讲解用java实现聊天室的过程,详细代码等健康大发利市就是款到即发可是对方克隆技术
资源推荐
资源详情
资源评论
本文档由 donaldjohn 编写, 联系方式:donaldjohn@qq.com/163.com/sina.com/sohu.com/live.cn
1
本人博客 www.cnblogs.com/donaldjohn/; blog.sina.com.cn/donaldjohn; donaldjohn.blog.163.com/
聊天室详解
一. 客户端的构成:
客服端由 Login.java, Login.java, LongConnection.java
1. Login 负责登陆, 其界面如下, 界面上的部件不赘述.
Login 的源码如下:
package client;
import java.awt.Color;
import java.awt.FlowLayout;
import java.awt.Font;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.BorderFactory;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JTextField;
import javax.swing.border.TitledBorder;
public class Login extends JFrame
{
/**
* 登陆窗口
*/
private static final long serialVersionUID = 1L;
本文档由 donaldjohn 编写, 联系方式:donaldjohn@qq.com/163.com/sina.com/sohu.com/live.cn
2
本人博客 www.cnblogs.com/donaldjohn/; blog.sina.com.cn/donaldjohn; donaldjohn.blog.163.com/
private JLabel jLabel1, jLabel2, jLabel3;
private JTextField userName, serverAddress, port;
private JButton jLogin, jReset;
private JPanel panel;
// 初始化各组件
private void init()
{
jLabel1= new JLabel();
jLabel2 = new JLabel();
jLabel3 = new JLabel();
jLabel1.setText("用户名");
jLabel2.setText("服务器");
jLabel3.setText("端口号");
userName = new JTextField();
serverAddress = new JTextField();
port = new JTextField();
userName.setColumns(20);
serverAddress.setColumns(20);
port.setColumns(20);
userName.setText("donaldjohn");
serverAddress.setText("localhost");
port.setText("5000");
jLogin = new JButton();
jReset = new JButton();
jLogin.setText("登陆");
jReset.setText("重置");
jLogin.setText("登陆");
jReset.setText("重置");
//为登陆按钮注册监听事件
jLogin.addActionListener(new ActionListener()
{
本文档由 donaldjohn 编写, 联系方式:donaldjohn@qq.com/163.com/sina.com/sohu.com/live.cn
3
本人博客 www.cnblogs.com/donaldjohn/; blog.sina.com.cn/donaldjohn; donaldjohn.blog.163.com/
@Override
public void actionPerformed(ActionEvent e)
{
Login.this.excute(e);
}
});
// 为重置按钮注册监听事件
jReset.addActionListener(new ActionListener()
{
@Override
public void actionPerformed(ActionEvent e)
{
Login.this.reset(e);
}
});
panel = new JPanel();
panel.add(jLabel1);
panel.add(userName);
panel.add(jLabel2);
panel.add(serverAddress);
panel.add(jLabel3);
panel.add(port);
panel.add(jLogin);
panel.add(jReset);
panel.setBorder(BorderFactory.createTitledBorder (null, "用户登陆
",TitledBorder.LEFT , TitledBorder.ABOVE_TOP , new Font(Font.DIALOG,
Font.ITALIC, 20), Color.RED));
this.setAlwaysOnTop(true);
this.setVisible(true);
this.setSize(300, 200);
this.setDefaultCloseOperation(EXIT_ON_CLOSE );
this.getContentPane().add(panel);
this.setResizable(false);
}
本文档由 donaldjohn 编写, 联系方式:donaldjohn@qq.com/163.com/sina.com/sohu.com/live.cn
4
本人博客 www.cnblogs.com/donaldjohn/; blog.sina.com.cn/donaldjohn; donaldjohn.blog.163.com/
//负责重置的处理程序
private void reset(ActionEvent e)
{
userName.setText(null);
serverAddress.setText(null);
port.setText("5000");
}
//登陆按钮具体的处理程序
private void excute(ActionEvent e)
{
// 新建登陆进程, 处理登陆相关的事宜
new LoginConnection(userName.getText(), serverAddress.getText(),
Integer.parseInt(port.getText()), this);
}
public Login(String name)
{
super(name);
this.init();
}
public static void main(String[] args)
{
new Login("登陆");
}
}
2. LoginConnection.java 该类是登陆进程类, 负责处理登陆的相关事宜, 源码
如下:
package client;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.Socket;
import java.util.List;
import javax.swing.JOptionPane;
本文档由 donaldjohn 编写, 联系方式:donaldjohn@qq.com/163.com/sina.com/sohu.com/live.cn
5
本人博客 www.cnblogs.com/donaldjohn/; blog.sina.com.cn/donaldjohn; donaldjohn.blog.163.com/
import Util.MessageType;
import Util.XMLUtil;
public class LoginConnection extends Thread
{
private String userName;
private String serverAddress;
private int port;
private Login login;
private InputStream is;
private OutputStream os;
private Chatting chatting;
private Socket socket;
//LoginConnection 的构造方法, 在此构造方法中, 调用本类的 connect2Server()方法,
如果成功连接, 则继续调用 login()方法, 与主机进行相关交互.具体查看 login()方法注释.
public LoginConnection(String userName, String serverAddress, int port, Login
login)
{
this.userName = userName;
this.serverAddress = serverAddress;
this.port = port;
this.login = login; //持有 login 的引用, 为的是能够以 login 为 parent 组件,
弹出提//示对话框.
if(this.connect2Server(serverAddress, port))
this.login();
}
//负责连接到服务器端, 初始化, socket 和 输入输出流. 失败弹出消息对话框.
private boolean connect2Server(String serverAddress, int port)
{
try {
this.socket = new Socket(serverAddress, port);
is = socket.getInputStream();
os = socket.getOutputStream();
return true;
} catch (Exception e) {
JOptionPane.showMessageDialog(login, "服务器可能还没启动, 请确定服
务器正常", "无法连接到服务器", JOptionPane.ERROR_MESSAGE);
return false;
}
}
剩余32页未读,继续阅读
资源评论
- xq79978792015-04-13没能跑起来,只能看代码了
- Upind_0012013-01-06恩,不错的聊天室
zhangquanbo
- 粉丝: 0
- 资源: 1
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功