~4q;D5iB/h1gC0写这个工具的动机是准备要测试一个通讯软件,在他们开始设计的时候自己先写个试试看,51Testing软件测试网)C5kA$f/L!z8O51Testing软件测试网#xbb%?qY
虽然简单,不过可以在自己系统设计,通讯协议设计和实现等过程中加深自己对通讯软件的认识.5PuV#Cl0
2R;Y/f%kD]0不过界面实在丑陋,功能也比较简单,贻笑大方了.B!YM$R\-GP-w0
t Y+}0T9|sDP0这个工具基本上实现了登陆,在线与离线显示,聊天,文件传输,日志记录和查看等基本功能.4Y9~3L!_7PN g0
TS L-b@G;x,}q0打算日后加入表情和建立全聊的功能.51Testing软件测试网bsC*^w1Z7A}8SW
I'~5z5q_0另外这个基本功能是模拟QQ的,不过实现的方式就完全是用TCP,没有象QQ那样混杂了TCP和UDP的通讯.都是通过服务器转发来实现通讯,设计这个协议的过程花了最多的时间.LXO+Wpoyb*B0
C7\/P1Kn"n0代码没什么好贴的,因为也就是那些基本的东西,例如线程,SOCKET,存储对象等等,简单说一说实现过程好了.51Testing软件测试网3Qj}/|,`T
_P&N|P
我没有用MINA的非阻塞通讯技术来做.哈哈,所以服务器的效率就有点蜗牛了.51Testing软件测试网h8n\J@)X9Sc
服务器有5大类:GUI类,监听类,通讯服务类,数据存储类,还有协议类;51Testing软件测试网Z9V8jHRu7Z5R,C i6Ox.n
监听类:主要实现监听连接分发数据给服务类.51Testing软件测试网}&qG rnk
通讯服务类:主要实现储存建立的的通讯对象和查找通讯对象并转发数据,例如用Hashtable来储存SOCKET的OutputStream和InputStream.
L.hNI`1^5dsv0协议类:主要实现解析协议给通讯服务类提供必要的通讯讯息(例如 解析收到的包,拿到转发目标的身份ID在通讯服务类中查找通讯对象并利用通讯对象转发生成的由协议封装的包)和生成转发包的内容.51Testing软件测试网0t(Ju_
LL#O$R4X51Testing软件测试网`%A;T+n3g
数据存储类:负责数据持久到数据库和读取用户信息.#m"B#a4E+g#yA}1Z0tld051Testing软件测试网 r3V%b7r(FHt
客户端有4大类:GUI类,通讯服务类,命令执行类,还有协议类;
,Z
U;\5^}
O-L0通讯服务类与命令执行类:主要实现监听接收的信息并用协议类解析需要执行的命令以及具体的执行内容.命令执行类负责执行对应的命令.例如显示内容,接收文件,获取用户列表信息等等.51Testing软件测试网a)EPfF:[
htF
协议类:主要实现解析协议给通讯服务类提供必要的通讯讯息(例如 解析收到的包,拿到转发目标的身份ID在通讯服务类中查找通讯对象并利用通讯对象转发生成的由协议封装的包)和生成转发包的内容.51Testing软件测试网N |Z6LMvC Mn/n51Testing软件测试网 _IFy;AQx]
服务器端:-^XaEP*\0
(N'o$^&f)Rv0_8v0聊天界面:51Testing软件测试网AM2b@/S7m
{X6qK |y9A)I0(\7] _g;eZ N"hO051Testing软件测试网ji*?aS]K
发送文件的界面51Testing软件测试网(NpEce`&S9c%G/^Y,I51Testing软件测试网5iZ'rs)w
E9n5lQ
51Testing软件测试网3u:kwhA)g2oppW
rh+JlM0T7\|0 51Testing软件测试网!D0s~6Y4^^9m&w
J#e,^&y_!nW&QFt0 51Testing软件测试网.B_sJre