首先,我们要实现一个QQ的基本功能,就要有以下模块:聊天,传文件,远程控制,视视频音频聊天; 所以我们就要分步来实现它们。 1.实现一个简单的服务器;(运用系统自带的telnet客户端) 2.实现多线程的服务器; 3.实现一个能够群聊的服务器;(运用系统自带的telnet客户端) 4.写一个简单的客户端; 5.制定xmpp风格的通信协议,并且将协议运用于通信; //以上是聊天模块的实现步骤 6.制定字节流协议,实现文件的传输;(如果要传送大文件,其功能还要深入实现:将文件进行切割传输) //以上是文件传输模块的实现 7.远程控制;(其实远程控制也是字节流协议的运用:服务器不断截图传图片,实现视频;客户端不断通过鼠标和键盘产生命令并以字节流方式传输) //以上是远程控制模块的实现方法 8.音视频聊天的实现 当然,在最后必须加上炫彩夺目的界面,这看上去似乎就是个QQ了,但是里面的细节还有许多:注册(当然这里就与数据库有关系了),添加好友,踢人,震动。。。。。。 下面就来稍微详细地做一些代码实现的主要步骤或是要注意的地方。 我们一般来说,都是先写服务器端,我们首先就应该建立一个服务器的class,然后在自己写的public void setupServer(int port){...}方法中创建一个服务器:java.net.ServerSocket ser= new java.net.ServerSocket(port);再创建一个客户端对象并让服务器进入等待:java.net.Socket so = ser.accept(); 之后的事情就是等有客户端连入就取得java.io.InputStream与java.io.OutputStream对象从而建立起通信的桥梁或管道,这都是写服务器端的一个基本架构;不过在运用字节流协议时还应将流“包装”为数据流即:DataInputStream和DataOutputStream;另外要值得注意的是class的功能一定要单一,不然会显得杂乱无章;还有,在具体的实现当中特别注意死循环的问题,这里暂不讨论;同样在哪里用throws 在哪里用try...catch...也是应该要考虑的。对于群聊,原理也比较简单,一个客户端发送一条消息到服务器,再通过服务器将消息依次转发,通过一个队列就可以实现。我认为最麻烦的一步会出现在运用xmpp协议上而不是在制定协议上,不过在制定协议时我认为应该“留退路”,即让协议有可以扩展的能力,你也说不清以后还会实现一些什么新功能。运用xmpp风格协议时烦杂在解析,还要注意如注册的流程,好友上线的流程,这都是需要细致分析的,如果这里class功能不单一的话,会给人造成一些不小的麻烦,会让你头晕脑胀。。。。。。要在这里特别强调的是可能会有人将服务器程序与客户端程序写到同一个包下,这是大错特错的,我们可以试想看,这还叫通信吗?。。。。。 在下一篇中,将列举一些常见的错误。。。。。。
通信阶段总结(1)
最新推荐文章于 2024-09-08 08:30:00 发布