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