以前计算机网络实验课有个小项目,放到Github了,今天偶然看到感受仍是往博客搬运下。html
具体来讲就是一个能够多人即时通信、传文件的桌面端软件以及对应的服务器端软件,客户端的GUI是用Java FX写的(GUI没太多时间美化,只能说功能上没问题),用到的主要技术是Java socket.其还实现了双侧NAT穿透(主要是靠发心跳包。以前写过一篇关于NAT穿透的文章,可是貌似想看这个文章须要登陆才能看,感受很迷:http://www.javashuo.com/article/p-ybqceodt-kt.html )。git
这个软件从技术上不太难,可是本身设计数据包信息格式、在服务器端对数据包进行转发的过程仍是挺有意思的。总体架构在不少地方都使用了多线程的思想,服务器端部分临界资源也用了cocurrent包下的一些类。github
基于传文件的功能还能够实现一些有意思的拓展,好比传语音啊视频啊(可是若是是实时的话,对服务器带宽要求仍是不低的),这些功能加上也很方便,用opencv等等包很容易实现。服务器
代码详见Github:https://github.com/JiaDingCN/QQ
限于我的水平,确定会有问题,发现了问题欢迎告诉我,thanks~网络