Java编程那些事儿102——网络编程技能1
副标题#e#
13.2 网络编程技能
前面先容了网络编程的相关基本常识,劈头成立了网络编程的观念,可是实际进修网络编程还必需利用某种措施设计语言举办代码实现,下面就先容一下网络编程的代码实现。
13.2.1 网络编程步调
凭据前面的基本常识先容,无论利用TCP方法照旧UDP方法举办网络通讯,网络编程都是由客户端和处事器端构成。虽然,B/S布局的编程中只需要实现处事器端即可。所以,下面先容网络编程的步调时,均以C/S布局为基本举办先容。
说明:这里的步调实现和语言无关,也就是说,这个步调合用于各类语言实现,不范围于Java语言。
13.2.1.1 客户端网络编程步调
客户端(Client)是指网络编程中首先提倡毗连的措施,客户端一般实现措施界面和根基逻辑实现,在举办实际的客户端编程时,无论客户端巨大照旧简朴,以及客户端实现的方法,客户端的编程主要由三个步调实现:
1、成立网络毗连
客户端网络编程的第一步都是成立网络毗连。在成立网络毗连时需要指定毗连到的处事器的IP地点和端标语,成立完成今后,会形成一条虚拟的毗连,后续的操纵就可以通过该毗连实现数据互换了。
2、互换数据
毗连成立今后,就可以通过这个毗连互换数据了。互换数据严格凭据请求响应模子举办,由客户端发送一个请求数据随处事器,处事器反馈一个响应数据给客户端,假如客户端不发送请求则处事器端就不响应。
按照逻辑需要,可以多次互换数据,可是照旧必需遵循请求响应模子。
3、封锁网络毗连
在数据互换完成今后,封锁网络毗连,释放措施占用的端口、内存等系统资源,竣事网络编程。
最根基的步调一般都是这三个步调,在实际实现时,步调2会呈现反复,在举办代码组织时,由于网络编程是较量耗时的操纵,所以一般开启专门的现场举办网络通讯。
13.2.1.2 处事器端网络编程步调
处事器端(Server)是指在网络编程中被动期待毗连的措施,处事器端一般实现措施的焦点逻辑以及数据存储等焦点成果。处事器端的编程步和谐客户端差异,是由四个步调实现,依次是:
1、监听端口
处事器端属于被动期待毗连,所以处事器端启动今后,不需要提倡毗连,而只需要监听当地计较机的某个牢靠端口即可。
这个端口就是处事器端开放给客户端的端口,处事器端措施运行的当地计较机的IP地点就是处事器端措施的IP地点。
2、得到毗连
当客户端毗连随处事器端时,处事器端就可以得到一个毗连,这个毗连包括客户端的信息,譬喻客户端IP地点等等,处事器端和客户端也通过该毗连举办数据互换。
一般在处事器端编程中,当得到毗连时,需要开启专门的线程处理惩罚该毗连,每个毗连都由独立的线程实现。
3、互换数据
处事器端通过得到的毗连举办数据互换。处事器端的数据互换步调是首先吸收客户端发送过来的数据,然后举办逻辑处理惩罚,再把处理惩罚今后的功效数据发送给客户端。简朴来说,就是先吸收再发送,这个和客户端的数据互换数序差异。
其实,处事器端得到的毗连和客户端毗连是一样的,只是数据互换的步调差异。
虽然,处事器端的数据互换也是可以多次举办的。
在数据互换完成今后,封锁和客户端的毗连。
#p#副标题#e#
4、封锁毗连
当处事器措施封锁时,需要封锁处事器端,通过封锁处事器端使得处事器监听的端口以及占用的内存可以释放出来,实现了毗连的封锁。
其实处事器端编程的模子和呼唤中心的实现是雷同的,譬喻移动的客服电话10086就是典范的呼唤中心,当一个用户拨打10086时,转接给一个专门的客服人员,由该客服实现和该用户的问题办理,当别的一个用户拨打10086时,则转接给另一个客服,实现问题办理,依次类推。
在处事器端编程时,10086这个电话号码就雷同于处事器端的端标语码,每个用户就相当于一个客户端措施,每个客服人员就相当于处事器端启动的专门和客户端毗连的线程,每个线程都是独立举办交互的。
这就是处事器端编程的模子,只是TCP方法是需要成立毗连的,对付处事器端的压力较量大,而UDP是不需要成立毗连的,对付处事器端的压力较量小而已。
13.2.1.3 小结
总之,无论利用任何语言,任何方法举办基本的网络编程,都必需遵循牢靠的步调举办操纵,在熟悉了这些步调今后,可以按照需要举办逻辑上的处理惩罚,可是照旧必需遵循牢靠的步调举办。
#p#分页标题#e#
其实,基本的网络编程自己不难,也不需要许多的基本网络常识,只是由于编程的基本成果都已经过API实现,并且需要凭据牢靠的步调举办,所以在入门时有必然的门槛,但愿下面的内容可以或许将你快速的带入网络编程技能的大门。
13.2.2 Java网络编程技能
Java语言是在网络情况下降生的,所以Java语言固然不能说是对付网络编程的支持最好的语言,可是必需说是一种对付网络编程提供精采支持的语言,利用Java语言举办网络编程将是一件较量轻松的事情。
和网络编程有关的根基API位于java.net包中,该包中包括了根基的网络编程实现,该包是网络编程的基本。该包中既包括基本的网络编程类,也包括封装后的专门处理惩罚WEB相关的处理惩罚类。在本章中,将只先容基本的网络编程类。
首先来先容一个基本的网络类——InetAddress类。该类的成果是代表一个IP地点,而且将IP地点和域名相关的操纵要领包括在该类的内部。
关于该类的利用,下面通过一个基本的代码示例演示该类的利用,代码如下:
package inetaddressdemo;
import java.net.*;
/**
* 演示InetAddress类的根基利用
*/
public class InetAddressDemo {
public static void main(String[] args) {
try{
//利用域名建设工具
InetAddress inet1 = InetAddress.getByName("www.163.com");
System.out.println(inet1);
//利用IP建设工具
InetAddress inet2 = InetAddress.getByName("127.0.0.1");
System.out.println(inet2);
//得到本机地点工具
InetAddress inet3 = InetAddress.getLocalHost();
System.out.println(inet3);
//得到工具中存储的域名
String host = inet3.getHostName();
System.out.println("域名:" + host);
//得到工具中存储的IP
String ip = inet3.getHostAddress();
System.out.println("IP:" + ip);
}catch(Exception e){}
}
}
在该示例代码中,演示了InetAddress类的根基利用,并利用了该类中的几个常用要领,该代码的执行功效是:
www.163.com/220.181.28.50
/127.0.0.1
chen/192.168.1.100
域名:chen
IP:192.168.1.100
说明:由于该代码中包括一个互联网的网址,所以运行该措施时需要联网,不然将发生异常。
在后续的利用中,常常包括需要利用InetAddress工具代表IP地点的结构要领,虽然,该类的利用不是必需的,也可以利用字符串来代表IP地点举办实现。