网络通信,实际上就是在不同机器上的两个程序间的字节(本质上是二进制位)传输。
一般情况下,两个通信的程序中,一个是请求者,我们称之为客户端,另一个是等待被请求者,这就是服务器。
简单服务器创建格式比较简单,格式如下:
java.net.ServerSocket server = new java.net.ServerSocket(9090);
其中的参数9090,指的是创建服务器时所使用的端口号。
每台电脑上都有65536个端口号,服务器在指定的端口上等待客户机的连接进入。
创建好服务器对象后,接下来就是等待客户机连入:
java.net.Socket client = server.accept();//等待客户机连接进入
//这个方法会阻塞,它会一直等待直到有客户机连接进入,才会执行后面的代码
客户机连接进入后,就可以获取到客户机的输入输出流对象
java.io.InputStream ins = client.getInputStream();
java.io.OutputStream ous = client.getOutputStream();
通过输出流对象(ous),可以将字节流发送给客户机;
通过输入流对象(ins),可以接收到从客户机发送过来的字节流;
使用输入流的read()方法时,也会阻塞,它会一直等待,直到有字节传过来。
创建服务器是比较简单的,而定义双方的通信规则才是关键。
传送的字节流在何处表示一条消息,这是我们要思考的。现在学习的结束标志是"\r\n",我们可以根据自己的想法,自己定义规则。
如XMPP协议格式,使用XML式的结构来定义通信协议。可以自己定义在标签<msg>和标签</msg>之间的内容即为一次通信发送的一条完整消息。
我们要思考的还有代码重构,以及模块化设计。
选择增加一个新类,还是在原来的类里面增加功能;
是否将某些代码封装成一个独立的方法,何时封装;
这些都没有一个统一的标准,只有通过不断地练习,不断地思考、总结,才能逐渐写出高质量的代码。
我认为,每一个类都应该只负责单一方面的功能,如ChatTools类,表示的是通信工具类,它只负责消息的转发,保存处理客户的线程队列。
同时还要考虑,一个类是否要实例化,如果我们只是使用类中的方法,而不需要实例化该类,那么我们就将方法定义为静态的。
为了不给这个类有实例化的机会,我们还要将这个类的构造函数私有化。
类中的代码尽量封装成独立的方法,这样不仅可以方便重复调用,减少代码冗余,而且思路也会更清晰。
在练习中还有一个问题需要谨慎对待。
方法中的可能出现的异常是在方法中处理掉(即在方法中使用try{}catch(Excrption e){}处理),
还是直接将异常抛给上层调用者(即throws Exception),由上层调用者去处理。
如果在方法中处理掉时,应该避免上层调用者出现死循环。
分享到:
相关推荐
网络通信年终总结.docx
1、 了解Android网络通信技术 2、 掌握在程序中嵌入浏览器的方法 3、掌握HTTP通信 4、掌握Socket通信 实验内容:(其中,1必做,2和3选一个) 1、 开发一个简单的浏览器程序,实现网址输入、前进、后退、刷新网页等...
网络通信中涉及的相关基础知识,分章节总结了网络通信中所涉及的概念及相关解释。概括了解网络通信知识。
网络通信年终总结(完整版).doc
现代通信网络复习总结.pdf
PROFINET通信技术总结
移动通信总结全文共9页,当前为第1页。移动通信总结全文共9页,当前为第1页。移动通信总结 移动通信总结全文共9页,当前为第1页。 移动通信总结全文共9页,当前为第1页。 一、移动通信概念 移动通信是指通信双方至少...
2022201-年年度计算机网络通信工作总结.docx
201-年年度计算机网络通信工作总结.docx
研究生课程 移动通信 总结 清华大学出版社 无线通信与网络
北京理工大学,网络与通信安全,期末复习总结,个人总结全部知识点应对期末考试
通信网络理论总结.doc
Linux网络通信 socket应用编程知识点总结含例程
常用网络通信协议结构图,清楚明了,难得的总结性思维图。
实现功能:Socket通信,分为客户端和服务端两个程序,实现客户端与服务端间的通信,功能包括 1)客户端请求得到服务端的当前时间和主机名称; 2)客户端请求得到所有与服务端连接的其他客户端的信息;3)客户端向...
linux系统下建立多线程程序设计,完成UDP网络通信的发送与接收,包括总结与源代码,实测效果可见链接https://blog.csdn.net/zxp121127/article/details/78506081
【计算机通信网络总结】计算机通信网络总结精选八篇_范文118.mhtml
网络与通信技术总结.pptx
网络通信错误代码大全,很不错的一些总结,给大家分享一下
描述了网络通信技术中的一些基本概念,非常清晰明了,相信会对大家有所帮助,PDF内为繁体内容,介绍了CDMA/FDMA/LTE等基本概念