昨天经过一些考虑,现在基本可以确定下来采取教授的模式,我之前主要考虑到尽量降低服务器的负载,因为以我的观点,作为一个网络服务器应将资源主要放在手法消息,操作数据这些单独分开比较好,因为要不停地读数据库,比收发一条消息浪费更多的资源。
但经过仔细考虑,服务器承受这些应该是没问题的,逻辑的判断固然占CPU,但如果有一台单独的机子来做服务器,以现在的电脑配置,完成这个任务应该是没有问题的,所以我考虑将其各种逻辑判断都放在服务器,在把服务端实现之后,要测试一下其最大承载能力,如果能同时承载200台机子,那么这种模式就是可行的,虽然性能不是最优,但已经满足了我们的需求。
我还考虑了用户登录,在线和登出的判断。
UDP因为没有建立握手机制,所以登出和在线都不能简单的地以状态来判断。我打算让客户端定时向服务器发一条消息,如果超过这个时间,服务器没有接受到消息,则判断该客户为离线状态。
我要定义一个结构体,来实现这些消息的判断。
我还要考虑实现文件的发送,先进行测试。
因为文件的发送可能要分块来实现,而UDP中无法保证接受到数据流的顺序,所以也要建立一个结构体,来表示数据传流的顺序,排序后再进行合并。还有个问题是,如果是传文件,可能要先传送一条消息,表示要开始传文件了,然后再进行传输。