本文主要是介绍网络编程(ip地址和inetAddress类、统一资源定位符URL),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
TCP/IP协议:
为了进行网络通信,通信双方必须遵守通信协议.目前最广泛使用的是TCP/IP协议,它是Internet中各方所遵循的公共协议.TCP(Transport Control Protocol)是一种传输控制协议,IP(Internet Protocol)是一种网际协议,TCP/IP代表这两个协议。
TCP/IP分为四个层次:
网络接口层:负责接收和发送物理帧;
网络层:负责相邻节点之间的通信;
传输层:负责起点到终点的通信;
应用层:提供诸如文件传输、电子邮件等应用程序。
TCP协议将任何网络信息传输当作信息流。如,机器A上的一个长报文发送到机器B,发送端A需要将数据分片,把一片片数据分别打包发送。数据包有一个头,指明该数据包发往何处、包中数据在接收序列中所处的位置。每个包都按照IP地址提供的目的地从一个台机器传送到另一台机器,或从一个网络节点传送到另一个网络节点。在接收端B,这些数据包都能够按照正确的顺序重新组装起来。
TCP/IP协议是一个协议族,由一组协议组成,主要包含以下更具体的协议:
Telnet(远程登录):允许一台计算机用户登录到另一台远程计算机上,使远程操作如同在本地计算机上操作一样。
FTP(File Transfer protocol,文件传输协议):允许用户将远程主机上的文件复制到自己的计算机上。
SMTP(simple Mail Transfer Protocol,简单邮件传输协议):用于传输电子邮件。
NFS(Network file Server,网络文件服务器):使多台计算机透明地访问彼此的目录。
HTTP:一种超文本传输协议,它是基于TCP/IP协议的,是WWW浏览器和服务器之间应用层的通信协议。HTTP是一种通用、无状态、面向对象的协议。HTTP会话(事务)包括四个步骤:连接(Connection)、请求(Request)、应答(Response)和关闭(Close)。
Java语言可编写低层的网络应用。例如,传输文件,建立邮件控制器,处理网络数据等。Java语言支持的Internet协议有ftp、telnet、www等,支持网络通信的软件都在java.net包中,例如,java.net.ftp、java.net.www等。
IP地址:
IP地址用于指明因特网上的一台计算机在网络中的地址,用32位二进制代码表示一个网络地址。地址分A、B、C、D、E五类,常用的是A、B、C三类:
A(1.0.0.0-126.255.255.255):0,7位网络号,后24位为主机号;
B(128.0.0.0-191.255.255.255):10,14位网络号,后16位为主机号;
C(192.0.0.0-223.255.255.255):110,21位网络号,后8位为主机号;
D(224.0.0.0-239.255.255.255):1110,28位多点广播组标号;
E(240.0.0.0-254.255.255.255):1111,保留试验使用。
IP地址用四段十进制数表示(8位一段)。例如:192.168.1.23
或用文字域名表示。例如:www.baidu.com 在因特网上,域名服务器(Domain Name Server,DNS)执行文字名称到二进制网络地址的映射
InetAddress类:
Java.net包中有InetAddress类的定义,InetAddress类的对象用于IP地址和域名,方法:
getByName(String s):获得一个InetAddress 类的对象,该对象中含有主机的IP地址和域名,该对象用如下格式表示它包含的信息:
String getHostName():获取InetAddress对象的域名;
String getHostAddress():获取InetAddress对象的IP地址;
getLocalHost():获得一个InetAddress对象,该对象含有本地机的域名和IP地址。
package cn.url.day24;import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.net.InetAddress;
import java.net.MalformedURLException;
import java.net.URL;
import java.net.URLConnection;
import java.net.UnknownHostException;public class URLTest {public static void main(String[] args){//UrlDemo();ipDemo();}/*** 通过网址(地址)获取某域内内容 */public static void UrlDemo() {InputStreamReader isr = null;// 作用域达不到,放此处值空try {// 因创建URL对象可能会产生MalformedURLException异常,需要捕捉网址错误异常// URL url = new URL("http://192.168.5.10/webapp/hello.txt");URL url = new URL("https://123.sogou.com/");//创建一个URL对象// InputStream is = url.openStream();//打开地址,需要把地址的内容输入到程序URLConnection uc = url.openConnection();//获得URLConnection对象InputStream is = uc.getInputStream();//获得从远程主机获取信息的InputStream流对象。isr = new InputStreamReader(is);// 把输入到程序的内容读出来int c;while ((c = isr.read()) != -1) {System.out.print((char) c);}} catch (MalformedURLException e) {e.printStackTrace();} catch (IOException e) {e.printStackTrace();} finally {try {if (isr != null)isr.close();} catch (IOException e) {e.printStackTrace();}}}/*** 获取ip地址及域名 控制台:* www.baidu.com180.97.33.107计算机名/计算机ip*/public static void ipDemo(){try {InetAddress ia = InetAddress.getByName("www.baidu.com");String name = ia.getHostName();//获取InetAddress对象的域名;String ip = ia.getHostAddress();//获取InetAddress对象的IP地址;//本机计算机名和ip地址InetAddress s = ia.getLocalHost();//获得一个InetAddress对象,该对象含有本地机的域名和IP地址。System.out.println(name);System.out.println(ip);System.out.println(s);} catch (UnknownHostException e) {e.printStackTrace();}}
}
二、统一资源定位符URL
统一资源定位符URL(Uniform Resource Locator)是www客户机访问Internet时用来标识资源的名字和地址。超文本链路由统一资源定位符URL维持。URL的格式是:
<METHOD>://<HOSTNAME:PORT>/<PATH>/<FILE>
其中:Method是传输协议:HOSTNAME是文档和服务器所在的Internet主机名(域名系统中DNS中的点地址);PORT是服务端口号(可省略);PATH是路径名,FILE是文件名。例如:
http://www.xinhua.net/(http是协议名,www.xinhua.net是主机名)
http://www.xinhua.net/view/6079.html (www.xinhua.net是主机名,view/6079.html是文件路径和文件名)
Java.net包有URL类,一个URL对象可以表示一个网络资源。程序利用URL对象能实现Internet寻址、网络资源的定位连接、在客户机与服务器之间直接访问等。URL类的构造方法是URL(String s)
其中,s指出网络中的一个资源。
利用URL对象访问网上资源的方法是:先创建URL对象, 因创建URL对象可能会产生MalformedURLException异常。所以,创建URL对象的代码应出现在try…catch语句块中,以便能捕捉网址错误异常。(见上UrlDemo方法)
URLConnection类
要接收和发关信息还要用URLConnection类,程序获得一个URLConnection对象,相当于完成对指定URL的一个HTTP连接。
先要创建一个URL对象,然后利用URL对象的openConnection()方法,从系统获得一个URLConnection对象。程序有了URLConnection对象后,就可使用URLConnection类提供的以下方法获得流对象和实现网络连接:
getOutputStream():获得向远程主机发送信息的OutputStream流对象;
getInputStream():获得从远程主机获取信息的InputStream流对象。有了网络连接的输入和输出流,程序就可实现远程通信;
connect():设置网络连接。
信息的发送和接收
发送和接收信息要获得流对象,并由流对象创建输入或输出数据流对象。然后,就可以用流的方法访问网上资源。如同本地数据流一样,网上资源使用结束后,数据流也应及时关闭。
这篇关于网络编程(ip地址和inetAddress类、统一资源定位符URL)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!