如何从零开始写一个即时通讯软件(附源码)

       即时通讯,即发送了消息后对方马上收到,一般用tcp或者udp协议来传输消息。我也是第一次深入学习tcp和udp的使用,编码过程中遇到很多难题,自己辛辛苦苦百度,解决了一个又一个困难,但是个人的听闻是有限的,希望能抛砖引玉,听取到大家更好的解决办法。

       项目地址:http://download.youkuaiyun.com/detail/qq_27311165/9911099

       首先,这个项目的服务器大部分bean用Spring来托管,Spring托管了项目的dao层和业务层(QQService)还有helper模块(UDPHelper、TCPConnectionManager这两个单例),而且都是单例。单例就可能牵扯到线程安全问题,dao都是单例,jdbc中,如果多个线程同时执行静态方法DriverManager.getConnection()会抛出异常,所以将该静态方法封装到DBHelper的getConnection()方法中,加上synchronized使线程同步,因为dao的方法除了dbHelper.getConnection();外其他都是访问局部变量和参数,每个线程调用dao的方法时都有自己的局部变量和参数,所以dao现在是线程安全的。服务器其他部分经过我不停地取证,应该也是线程安全的。             客户端,因为我想急于验证它和服务器的通讯,所以写得非常简便。客户端读者也可以用另外的语言编写,只要发送的tcp和udp报文能被服务器解析(“报文规定.txt”已经在压缩包中)。

       数据库只有3张表user、friend、unreadmsg。

CREATE TABLE user(
   userid  

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值