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

    xiaoxiao2021-12-11  6

    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():设置网络连接。

    信息的发送和接收

    发送和接收信息要获得流对象,并由流对象创建输入或输出数据流对象。然后,就可以用流的方法访问网上资源。如同本地数据流一样,网上资源使用结束后,数据流也应及时关闭。

    转载请注明原文地址: https://ju.6miu.com/read-749993.html

    最新回复(0)