自己用JAVA写的一个TCP聊天工具.

上一篇 / 下一篇  2007-11-07 15:00:24

qDx!A3E#x0写这个工具的动机是准备要测试一个通讯软件,在他们开始设计的时候自己先写个试试看,

j6luaua6|i;ZR0

3lA9RZ.l{y0虽然简单,不过可以在自己系统设计,通讯协议设计和实现等过程中加深自己对通讯软件的认识.

2d,}UNg~;Z'T(t0

8q1sN0v5N:Zi%F w0不过界面实在丑陋,功能也比较简单,贻笑大方了.

)Ia&P7]0i6S'M5f3q Ur051Testing软件测试网Dv)T-A a'm j nM

这个工具基本上实现了登陆,在线与离线显示,聊天,文件传输,日志记录和查看等基本功能.

9w6@/z8b c3G$U051Testing软件测试网.e0_$E}(kwwp

打算日后加入表情和建立全聊的功能.

iZ2aL(p&dGH%`0

w Z5}0d%K0另外这个基本功能是模拟QQ的,不过实现的方式就完全是用TCP,没有象QQ那样混杂了TCP和UDP的通讯.都是通过服务器转发来实现通讯,设计这个协议的过程花了最多的时间.

5_Qi Yng t#w0

/Q1NC Digc0代码没什么好贴的,因为也就是那些基本的东西,例如线程,SOCKET,存储对象等等,简单说一说实现过程好了.
1D6{E jG`LZ0我没有用MINA的非阻塞通讯技术来做.哈哈,所以服务器的效率就有点蜗牛了.51Testing软件测试网 h2D\&`/r?+S!q
服务器有5大类:GUI类,监听类,通讯服务类,数据存储类,还有协议类;51Testing软件测试网G!UzL[-N"h[
监听类:主要实现监听连接分发数据给服务类.
W:kbp5t(|*M qa0通讯服务类:主要实现储存建立的的通讯对象和查找通讯对象并转发数据,例如用Hashtable来储存SOCKET的OutputStream和InputStream.
9yJAZfw v QL6T0协议类:主要实现解析协议给通讯服务类提供必要的通讯讯息(例如 解析收到的包,拿到转发目标的身份ID在通讯服务类中查找通讯对象并利用通讯对象转发生成的由协议封装的包)和生成转发包的内容.

v&H4_.X3W-j"h&L*i6z0

^4p R&o*nNEc_0数据存储类:负责数据持久到数据库和读取用户信息.51Testing软件测试网"?J"f1P3B#v3FB

51Testing软件测试网2~kFS0q;@Z

客户端有4大类:GUI类,通讯服务类,命令执行类,还有协议类;51Testing软件测试网7u9Up/\n.b
通讯服务类与命令执行类:主要实现监听接收的信息并用协议类解析需要执行的命令以及具体的执行内容.命令执行类负责执行对应的命令.例如显示内容,接收文件,获取用户列表信息等等.
bt/pYo N/w0协议类:主要实现解析协议给通讯服务类提供必要的通讯讯息(例如 解析收到的包,拿到转发目标的身份ID在通讯服务类中查找通讯对象并利用通讯对象转发生成的由协议封装的包)和生成转发包的内容.

W0Qk+N1?H0

(FbK)GJtw0服务器端:51Testing软件测试网+g!{Hc~D'@5d

'j(b { G5x]*ky0聊天界面:

| pQ%tfX)\G051Testing软件测试网D:D+f'Wc!o-J0u

8@`aOB+pK051Testing软件测试网._ng{}%P!G I

发送文件的界面51Testing软件测试网"s&XN~ ]m} m

E+b/bms051Testing软件测试网zC;X|7lR"O

wlU FC0q?[i0 51Testing软件测试网x]Y(r`%w8C

51Testing软件测试网$X"m'fRu:s9Ii1Au

 51Testing软件测试网C9S`O.d.v`s&_[A~


TAG:

我的个人空间 引用 删除 selon   /   2007-11-09 15:28:07
牛!
木卫十二 引用 删除 木卫十二   /   2007-11-09 11:47:00
向楼主学习!能发一下源代码供学习一下就更好了!
 

评分:0

我来说两句

日历

« 2022-12-26  
    123
45678910
11121314151617
18192021222324
25262728293031

数据统计

  • 访问量: 30083
  • 日志数: 33
  • 图片数: 3
  • 文件数: 8
  • 建立时间: 2007-10-10
  • 更新时间: 2011-06-28

RSS订阅

Open Toolbar