读书人

一步一步学通讯

发布时间: 2012-11-10 10:48:51 作者: rapoo

一步一步学通信
学习通信有将近一个月的时间了,从创建一个简单的服务器到今天用XMPP协议与字节流协议实现服务器与客户机的交互这段过程中,不仅感受到了自己技术上的薄弱,更体会到了作总结的必要性——一方面为自己的学习进度做一个记录,一方面对技术上做一些查漏补缺,更重要的是作总结对我来说还是一件强力而为的事。
一、创建简单服务器
每台机器都有自己的IP地址,每个服务器都有自己的端口号,只要提供一个没被占用的端口号,就可以创建服务器了。得到服务器的Socket对象,取得输入输出流,然后用telnet软件与服务器进行连接。(每台电脑有0-65535个端口号,我们一般会用1024之后的端口号,0-1024之间的端口号都是知名端口号,一般已被占用!)

 )同时,协议的制定也会影响整个程序的设计)。流程还是那个流程,但是要同时处理客户端与服务器,复杂程度就会大很多,而且还有很多不确定因素。
首先是理清通信流程的问题,制定通信流程图,分清什么是同步消息什么是异步消息——同步消息:在我们注册或登录服务器时,首先客户端要发送请求信息,服务器收到请求信息解析并进行信息验证,然后返回注册或登录状态信息,客户端收到信息解析并判断成功或失败,然后进行相应的操作。异步消息:当客户端发送聊天信息时,不考虑服务器是不是收到,或者发送到其他客户端,我只管发我的,与你无关。这一类的消息必然要在run()方法中处理了!
然后是关于类与方法的制定,客户机与服务器都要解析XML协议,所以我们将解析的方法放到一个util包下,服务器和客户端共用包里的方法,大大的减少了代码量。还有一些用户数据的封装类,存储用户线程发送上线下线的相关类的处理。(凭我现有的编程能力,只能尽量的让每个类处理同一件事,让每个方法只处理一件事!)
最后就是关于验证,每写一步验证一步,把每个小问题解决了,大的问题也就迎刃而解了。(说的容易,做起来真的很难!)
当然,不管在简单的服务器还是在XMPP中都遇到了这样或那样的问题,有些问题很幼稚,有些问题还没解决,这里只要谈到了自己的一些思路。关于字节流协议(文件头+文件体,相对与XMPP更严谨一些),对程序的设计上会有更多的问题,对于方法的设计会面临更多问题,这些都留待以后解决。

读书人网 >编程

热点推荐