项目总结:
经过三四天的时间,项目终于搞完了,基本实现了私聊,群聊,在线查看聊天记录,下载聊天记录等功能,但是界面做的不是很好,想着用QT做的时候,再把界面完善一下。做完与别人交流的时候,发现自己和别人有好几处不一样,我在socket传输文件时,传的是字符串,有的人传的是结构体。有人觉得账户和密码要组包发送,不然要是用户发了账户,然后人走开了,服务器一直阻塞在这,下一个客户端无法登录。又想了一下自己的程序,我用的多线程,每登录一个客户端就为它开一个线程,不影响其他客户端。
私聊那有个bug,A和B聊天期间,C要跟A或B聊天时,我采取的是如果C介入,我会告诉他,对方正在聊天,然后会退回到主界面。但是这样不好,我应该把他发的信息保存下来。还有个问题,因为我采用的是TCP,它是字节流,在黑窗口显示不出来,但是如果你用QT做,肯定会有按钮,但是如果你一不小心点了两次,数据会以极快的速度发过去,所以发送数据,协议不能太简单,一般应该有头有尾。
第二种方式:
我之前采用的是多线程+传输的是字符串,还有种方式是采用select+传输的是结构体。
未完待续。。。