免费教程_免费网赚教程_破解版软件-寂涯网络学习基地

当前位置: 主页 > 系统综合 > 各类编程 > Socket技术的聊天程序软件设计与实现(2)

Socket技术的聊天程序软件设计与实现(2)

时间:2012-05-21 12:37来源:未知 整理:寂涯网络 点击:


(1)Client类:实现客户端的功能。
(2)Clienfframe类:设计客厂T端的用户界面。
(3)ClientUtil类:用于处理字符串和显示信息和表情图片
的工具类。
(4)Server类:服务器端主类,用于实现服务器端功能。
(5)Message类:实现了聊天信息的属性和方法。
(6)Usermessage类:实现了用户信息的属性和方法。
3.22系统娄关系视图
系统类关系视图如图2所示
图2系统类关系视图
3,2.3系统实现关键
(1)控制好Socket个数和分配是决定程序能甭完成的关键。
(2)实现群聊是整个程序关键.利用群聊可以实现单醉和
文件传送。
(3)理清服务器端和客户端交互过程和传递的数据。
如何理解整个客户端和服务器端通信的这个模型。主要是
对ServerSocket中的accept方法接收到的Socket的理解。通信
过程是:首先服务器端肩动,建立监听端151,等待连接。其次
是客户端(c1、c2和c3)与服务器发起连接.由ServerSocket
中的accept方法建立一个Socket(SI、S2和S3),客户端和服
务器双方就分别通过各自相对应的&"ket进行通信,而
Serversocket建立的监听端口则继续进行监听,它本身并不参
与具体的通信过程。
4主要功能模块设计和实现
4.1用户列表模块
4.1.1用户列衰界面
当用户输人用户名后就会进人到用户列表窗口.界面设计
如图3所示。
图3用户列表窗口
1.2用户列表功能实现
用户列表窗f1要完成的功能是:显示所有在线用户信息,
监听群聊事件和监听私聊事件,并触发聊天窗ra的显示。
显示所有在线用户信息的代码如下:
if(u.flag1){
dim.clear();
for(Int i=0:i<o.1ength:i++){
dim.addElement(o[i]toStringO);
}
}else{
for(int i=0:i<dim size();i++){
String s=dim.get(i)toStringO;
String[] ss=s split("\\s+"):
if(ss[Ol equals(u usemame)){
dim.remove(i);
break;
  }
}
}
4.2用户通信模块
4.2.1聊天界面
当用户点击群聊按钮或双击用户列表中某个在线用户后就
会弹出到聊天窗13,界面设计如图4所示。

4.2.2聊天功能实现
私聊和群聊使用同一处理模块,该模块处理已接收信息,
将表情与字符分开.主要代码如下:
Pattern P=Pattern.compile('.gff'):
Matcher m=p.matcher(msg);
while(m.find())(
int start=m.start(1—2:
Iist.add(start):
start=start+6:
if{start>msg.lengthOJ{
break;
}
list add(start);
)
for(int i=0:I<Iist size();i++)
if(i<Jist size()一1){
int begin=Integer parseInt(1ist get(i)toStringO);
let over=Integer.parseInt(1ist get(i+1l toStringO);
String subs=msg substring(begin,over);
substrlist.add(subs);
)else{
String subs=msgsubstring(IntegeLparseln(istget()).toStringO));
substrlist add(subs);
)
)
将处理过的信息显示在面板上:
for (int i=O:j<msglist size();i++){
Matcher m=Dmatcher(sub);
州m.find()){
URL url=this getClass().getClassLoader().getResource{’
Image/"+sub);
textPane setCaretPosition(doc getLength()):
image=new Imagelcon(url);
textPane.insertlcon(image);
)else(
doc insertString(doc getLenOthO,sub.attd;
}
)
}
4.3服务器转发模块
服务器端不需要出现图形用户界面.服务器端所要做的工
作就是接收各个客户端传来的信息,识别信息的类型f包括用
户信息、上线信息、私聊信息、群聊信息和文件信勘.再将
信息转发给相应的客户。
将监听方法做成一个线程,此线程只负责监听.用于产生
一个新的Soekel.并将其存储起来,关键代码如下:
class ServerThread extends Thread(
pubric void run(J(
while(true){
Socket sc=ss accept();
ObjectOutputStream OOS=new ObjectOutputStream(sc
getOutputStreamO);
mp put(sc,cos);
SocketThread st=new SocketThread(sc);
st start();
}
}
)
转发聊天信息:
Message u=(Message)m:
if(u.toname equals(’alluser')}{

本页地址 http://www.jybase.net/biancheng/20120521931.html

百度搜索更多

谷歌搜索更多

顶一下
(0)
0%
踩一下
(0)
0%
------分隔线----------------------------

评价:
昵称: 验证码:点击我更换图片
推荐内容
赞助商
赞助商


关于本站免责声明视频更新google百度地图视频地图RRS订阅

如有什么问题请在本站留言,或发邮件到 hxt167#foxmail.com