通信技术博客




    在进入大二开始,我们这群IT初步者也开始了在通信阶段的学习、接触通信之前也只是隐隐约约地从周围同学那了解到它有多么地重要,在我们的学习中占很大一部分时间;仅仅这些还是没有让我们感觉到它的重要性、真正体现了它的重要性的是斌哥的一句话:“无通信不软件”。可见我们要想做像样的软件、还是得好好地运用通信方面的知识了。


   在学习的开始、我们是通过命令行来与自己创建的服务器连接的,这样的通信让我们容易接受和了解、我们自己 创建服务器的过程比较简单、只是负责接收来自命令行(即客服端)的消息并将其打印出来;其创建代码:ServerSocket
ss=new ServerSocket(port);这里ss就是创建的服务器、而port是自己需要给定的端口;关于这个端口、一般我们的电脑拥有的端口是0-65535;而其中0-1024的端口编号称为“知名端口”这是电脑机器已经设置好了的端口号,以便用于连接网络等各种其他网络连接;服务器创建好了后、我们要让它处于等待连接状态,Socket client=ss.accept();这样我们就可以用一个客服端来连接了。。。。


   服务器创建好了后、我们需要创建一个客服端,客服端的创建也是比较简单的;Socket s=new Socket(IP,port);其中IP为客服端连接的服务器的IP地址、port是为服务器提供连接的端口;通过这两个参数就可以跟服务器连接了。。。

   服务器跟客服端连接好了后、下面我们需要来处理两者之间的通信;在这里、它们之间要想达到一种通信顺利和畅通的效果,我们需要对客服端和服务器两者给定好彼此之间的通信协议、在这开始学习间,其协议比较简单、就是要求我们怎么读就怎么写;比如我们在客服端发送一段文字、那么我们在发送这段文字之前,需要做些什么呢?难道我们就直接将这段文字发送过去就可以了吗?当然、如果我们仅仅从只发送文字这块来说是可以的。。但是、实际生活中,我们的软件需要做的有很多、不是仅仅局限发送文字,所以、我们在发送这段文字之前,我们需要先将其文字的长度读进去、接着我们还要把文字的标志发送过去、好让对方接收到做出那种情况的接收。。。然后、我们就可以将这段文字发送过去了。。。在接收的一端、我们收的先是长度,这没什么关系,也不必做什么处理、然后接着的是发送数据的用途(即标志)读取到这个后、就要求我们对其做出相应的反应,标志是用于接收文字的、则我们就按文字发送的过程进行读取;这样我们得到的通信内容就不会有差错了。。。


    在上面、貌似我们将通信的处理得差不多了。。但我告诉你、这里还有很大一问题,因为我们给的标志没有很好的处理、我们的标志仅仅用数字1、2、3等标志、要知道我们发送消息是以字节的形式发送的、那么很可能我们会将读取的消息中某个字节编码当做标识符来读取、那样就会导致通信出问题了。。。所以、一般地、我们需要好好处理这个标识问题:在一般的大型通信软件中、它们用的标识是XMPP消息格式定义。其定义如下:所有的消息包括在<msg>为</msg>为标签的一段字符串内:<msg>具体消息必须是以<msg>开头,以</msg>结尾。
比如:登录请求
         <msg>
             <type>login</type>
             <name>user</name>
             <pwd>pwd</pwd>
         </msg>
当我们接收时,需要将消息提取出来、比如:String msg=readString();
                                        String type=getXMLValue("type",msg);//解释出消息类型
                                        String User=getXMLValue("name",user);
                                        String pwd=getXMLValue("pwd",pwd);
 

这样、我们就可以将信息完全地解释出来,而其中引起的数据错误的可能性就很少很少了。。。

已经两点多了。。下午还得去上课、所以有关通信方面的介绍暂时到这里、上面还有很多需要补充、比如数据的读取和写入过程。。。有时间、我再补充吧。。。再见了。。                                     



猜你喜欢

转载自glc.iteye.com/blog/1716846
今日推荐