资源简介
Java QQ聊天程序源码,userInfo.properties拷贝到C盘根目录下,存放与服务器连接上的对应的Socket,作用是保存服务器与客户端之间的流,便于服务器给每个客户端进行回发消息。
SocketListener内部类:监听客户端是否有连接到服务器,并将此客户端的Socket传递给HandleSocket进行处理,同时将client存放到List中,即clientConnection中。 HandleSocket内部类:处理一个Socket,接收一个Client发送过来的消息,并且服务器原封不动的返回给所有客户端,客户端对消息进行过滤。
代码片段和文件信息
package com.qq.main;
import java.awt.Dimension;
import java.awt.TextArea;
import java.awt.Toolkit;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.KeyAdapter;
import java.awt.event.KeyEvent;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import java.io.IOException;
import java.util.Vector;
import javax.swing.JButton;
import javax.swing.Jframe;
import javax.swing.JLabel;
import javax.swing.JList;
import javax.swing.JOptionPane;
import javax.swing.JScrollPane;
public class AllTalkframe extends Jframe {
TextArea oldMessageTextArea;
TextArea sendMessageTextArea;
JList userList;
JScrollPane userListPane;
JButton btSend;
JButton btClosed;
JButton upLine;
String doubleClickedName;
Client client;
String clientName;
JLabel userlisttitle;
Vector users;
// 只要服务器端有消息,就将消息显示到oldMessageTextArea
class showOldMessageThread implements Runnable {
public void run() {
boolean flag = true;
while (flag) {
try {
// 接收群聊服务器端回发过来的消息
String serverOutput = client.br.readLine() + “\r\n“;
if (!serverOutput.startsWith(“私聊“)
&& !serverOutput.startsWith(“*“)
&& !(serverOutput.substring(serverOutput
.indexOf(“:“) + 1).equals(“\r\n“))) {
String s1 = serverOutput.replace(‘说‘ ‘ ‘);
String s = s1.replaceAll(“罎“ “\r\n “);
oldMessageTextArea.append(s);
}
// 添加客户端的用户在线列表
if (!serverOutput.startsWith(“*“)
&& !serverOutput.startsWith(“私聊“)
&& (serverOutput.indexOf(“说“) != -1)) {
String listName = serverOutput.substring(0
serverOutput.indexOf(‘说‘));
// 如果JList中有相同名字的用户,则不添加,否则添加
if (!users.contains(listName)) {
System.out.println(“用户“ + listName + “上线了“);
users.add(listName);
userList.setListData(users);
}
}
// 判断服务器回发过来的消息是不是以“私聊“开头的,是的话就提取出这两个用户名
if (serverOutput.startsWith(“私聊“)) {
String siliaoName1 = serverOutput.substring(
serverOutput.indexOf(“*“) + 1 serverOutput
.indexOf(“和“));
String siliaoName2 = serverOutput.substring(
serverOutput.indexOf(“和“) + 1 serverOutput
.indexOf(“\r“));
String siliaoBenshen = ““;
String siliaoDuixiangName = ““;
if (siliaoName1.equals(clientName)) {
siliaoBenshen = siliaoName1;
siliaoDuixiangName = siliaoName2;
} else {
siliaoBenshen = siliaoName2;
siliaoDuixiangName = siliaoName1;
}
// 判断这两个名字中是否有与自己同名的,有的话就弹出个私聊窗口
if (siliaoName1.equals(clientName)
|| siliaoName2.equals(clientName)) {
new PointToPointTalkframe(siliaoBenshen + “和“
+ siliaoDuixiangName).setVisible(true);
}
}
} catch (IOException e1) {
System.out.println(“读取服务器端消息出错“);
}
}
}
}
AllTalkframe(final String clientName) {
this.clientName = clientName;
client =
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 232 2012-07-10 19:20 srcfans.com\QQ\QQ\.classpath
文件 382 2012-07-10 19:20 srcfans.com\QQ\QQ\.project
文件 89 2012-07-10 19:20 srcfans.com\QQ\QQ\.settings\org.eclipse.core.resources.prefs
文件 930 2012-07-10 19:20 srcfans.com\QQ\QQ\bin\com\qq\main\AllTalkfr
文件 1488 2012-07-10 19:20 srcfans.com\QQ\QQ\bin\com\qq\main\AllTalkfr
文件 1615 2012-07-10 19:20 srcfans.com\QQ\QQ\bin\com\qq\main\AllTalkfr
文件 749 2012-07-10 19:20 srcfans.com\QQ\QQ\bin\com\qq\main\AllTalkfr
文件 1659 2012-07-10 19:20 srcfans.com\QQ\QQ\bin\com\qq\main\AllTalkfr
文件 2985 2012-07-10 19:20 srcfans.com\QQ\QQ\bin\com\qq\main\AllTalkfr
文件 3349 2012-07-10 19:20 srcfans.com\QQ\QQ\bin\com\qq\main\AllTalkfr
文件 1695 2012-07-10 19:25 srcfans.com\QQ\QQ\bin\com\qq\main\Client.class
文件 1864 2012-07-10 19:20 srcfans.com\QQ\QQ\bin\com\qq\main\Main$1.class
文件 659 2012-07-10 19:20 srcfans.com\QQ\QQ\bin\com\qq\main\Main$2.class
文件 2486 2012-07-10 19:20 srcfans.com\QQ\QQ\bin\com\qq\main\Main.class
文件 1485 2012-07-10 19:20 srcfans.com\QQ\QQ\bin\com\qq\main\PointToPointTalkfr
文件 780 2012-07-10 19:20 srcfans.com\QQ\QQ\bin\com\qq\main\PointToPointTalkfr
文件 2793 2012-07-10 19:20 srcfans.com\QQ\QQ\bin\com\qq\main\PointToPointTalkfr
文件 3106 2012-07-10 19:20 srcfans.com\QQ\QQ\bin\com\qq\main\PointToPointTalkfr
文件 778 2012-07-10 19:20 srcfans.com\QQ\QQ\bin\com\qq\regist\Regist$1.class
文件 786 2012-07-10 19:20 srcfans.com\QQ\QQ\bin\com\qq\regist\Regist$2.class
文件 1074 2012-07-10 19:20 srcfans.com\QQ\QQ\bin\com\qq\regist\Regist$3.class
文件 783 2012-07-10 19:20 srcfans.com\QQ\QQ\bin\com\qq\regist\Regist$4.class
文件 2052 2012-07-10 19:20 srcfans.com\QQ\QQ\bin\com\qq\regist\Regist$5.class
文件 844 2012-07-10 19:20 srcfans.com\QQ\QQ\bin\com\qq\regist\Regist$6.class
文件 3014 2012-07-10 19:20 srcfans.com\QQ\QQ\bin\com\qq\regist\Regist.class
文件 1812 2012-07-10 19:27 srcfans.com\QQ\QQ\bin\com\qq\regist\UserInformation.class
文件 2289 2012-07-10 19:25 srcfans.com\QQ\QQ\bin\com\qq\server\Server$HandleSocket.class
文件 1408 2012-07-10 19:25 srcfans.com\QQ\QQ\bin\com\qq\server\Server$SocketListener.class
文件 1558 2012-07-10 19:25 srcfans.com\QQ\QQ\bin\com\qq\server\Server.class
文件 3845 2012-07-10 19:20 srcfans.com\QQ\QQ\bin\images\企鹅.JPG
............此处省略34个文件信息
评论
共有 条评论