您的位置:首页 > 理论基础 > 计算机网络

网络编程(ip地址和inetAddress类、统一资源定位符URL)

2016-10-24 20:37 423 查看
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.com
180.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():设置网络连接。

信息的发送和接收

发送和接收信息要获得流对象,并由流对象创建输入或输出数据流对象。然后,就可以用流的方法访问网上资源。如同本地数据流一样,网上资源使用结束后,数据流也应及时关闭。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: