从网上找了个java写的简陋的IM的实现:
http://javaprince.iteye.com/blog/889200
http://javaprince.iteye.com/blog/958446
这就是个局域网聊天软件的简陋版本,凑合能用,数据库层没有真正实现,登录使用userX,密码对应为pwdX,X从1到9取值。
凑合能用,暂时还没有移植到Android的打算。
我知道有smack库和openfire服务器这种开源代码,不过为了学习还是看这个自己实现XMPP协议的简陋代码好了。
代码说明:
server和client都有UI界面。
UI进程不能被后台进程阻塞,所以连接、关闭等操作都要用新开的线程来搞。
java自带的socket是阻塞的,accept()函数产生连接套接字的时候会阻塞。
这个阻塞通过为serverSocket调用setSoTimeout函数能够解决掉,而它抛出的超时异常则可以忽略!(因为我想打开、关闭、再打开同一个端口。。。)
swing的顶层容器JFrame等可以直接添加组件。
XMPP协议的使用,原作者是自定义的,不过也差不多够用了。我这里把XML消息的构造集中到XMLTool类中方便查看和以后的修改。
代码下载:http://pan.baidu.com/s/1c0fbdXu