|名词定义|
网络编程指的是多台主机之间的数据通讯操作。
网络的核心定义在于:有两台以上的电脑就称为网络。网络连接的目的不仅仅是为了进行电脑的串联,更多的情况下是为了进行彼此之间的数据通讯,而在通讯的实现上就产生了一系列的处理协议:IP、TCP、UDP等等,也就是说所谓的网络编程,实际上实现的就是一个数据的通讯操作而已,只不过这个通讯操作需要分为客户端和服务端。
网络程序的开发的两种模型:
1、C/S(Client/Server、客户端与服务端):要开发出两套程序,一套程序为客户端,另外一套为服务端,如果现在服务端发生了改变之后客户端也应该进行更新处理,这种开发可以由开发者自定义传输协议,并且使用一些比较私密的端口,所以安全性是比较高的,但是开发与维护成本比较高;
特点
服务端的特征:
被动的角色(从)。
等待来自客户端的请求。
处理请求并传回结果。
客户端的特征:
主动的角色(主)。
发送请求。
等待直到收到响应。
C/S分为两种开发:TCP(可靠的数据连接)、UDP(不可靠的数据连接);
TCP的程序开发是网络程序的最基本的开发模型,其核心的特点是使用两个类实现数据的交互处理:ServerSocket(服务端)、Socket(客户端)。ServerSocket的主要目的是设置服务器的监听端口,而Socket需要指明要连接的服务器地址和端口。
数据报发送与接收(UDP),基于数据报的网络编程实现,如果想要实现UDP程序需要两个类:DatagramPacket(数据内容)、DatagramSocket(网络的发送与接收)。数据报就好比发送的短消息一样,客户端是否收到与发送者无关。
UDP发送的数据一定是不可靠的,但是TCP由于需要保证可靠的连接,所以所需要的服务器资源就越多。
2、B/S(Browser/Server、浏览器与服务端):只开发一套服务端的程序,而后利用浏览器作为客户端进行访问,这种开发与维护的成本较低(只有一套程序),但是由于其使用的是公共的HTTP协议并且使用的公共的80端口,所以其安全性相对较差,现在的开发基本上以“B/S”结构为主。
|参考资料|
[1] 阿里云大学Java视频课程
[2] Java开发者
[3] 维基百科