网络通信1

来源:互联网 发布:玄界之门 知乎 编辑:程序博客网 时间:2024/04/29 20:23

最近感觉网络通信蛮好玩的,所以想学一下网络通信,从最基本的开始吧!

  首先了解url,url是统一资源定位符,用于在internet上指定信息资源的地址。url的基本结构如下:

  协议://主机【:端口】【/文件】【#引用】

url支持HTTP,FILE,FTP等多种协议

(1)创建url对象

java提供url类类表示url地址。url类及其构造方法声明如下:

public final class URL implements java.io.Seriazable

{

public URL(String spec)throw MalformedURLException

public URL(String protocol,String host,String file)throws MalformedURLException

public URL(String protocol,String host,int port,String file)throws MalformedURLException

其中,参数spec指定一个完整的url地址;protocol 指定协议;host指定主机,本机的主机名默认为localhost,本机的ip地址用127.0.0.1指代,并非本机实际ip地址;】指定端口;FILE制定文件名;

例如:URL urll=new URL("file://localhost/C:/program Files/Java/doc.html");

            URL urll=new URL("http://www.edu.cn");

             URL urll=new URL("http://","www.myweb.edu.cn",8080,"/web/myfile.html");

FILE 协议定位在局域网或匿名服务器上的文件。当url使用file协议时,表示本机文件系统;当url使用http协议时,表示网络上的某个文件。

(2)获得url对象属性

url对象提供获得url对象的协议,主机,端口,文件和引用字符串等属性的方法,声明如下:

pulic string tostring()            //获得完整url地址字符串

public string getorocol()     //获得url对象的协议名

public int getport()               //获得url对象的端口号

public int getdefultport()   //获得url对象的默认端口号

(3)使用流获得url资源内容

一个url对象仅仅代表一个网络资源,获取资源的内容的操作需要使用流,url类提供openstream()方法返回一个字节输入流对象,声明如下:

public final inputstream openstream()throw java.io.ioexception   //返回字节输入流对象

他将返回一个字节输入流对象,该对象连接着一条和资源通信的通道,于是,访问资源内容的操作转化为使用输入流的对象操作,即从字节输入流中读取数据资源。

2.urlconnection类

一个file对象表示一个文件,一个字符串指定一个文件名,通过file对象可以获得指定文件的各种属性。与此类似,一个url地址表示在internet上的一个文件名,一个java.net.urlconnection对象表示internet上的一个文件,文件名由url地址指定,通过该文件对象可以获得指定文件的各种属性,而读取文件的内容仍然由流实现

(1)urlconnection 类声明

urlconnection 类只支持http协议,uroconnection类及其声明方法如下:

public abstract class urlconnection

{

public  url geturl()     //返回当前连接的url对象

pulic int getcontentlength()    //返回资源文件的长度

public string getcontenttype()    //返回资源文件的类型

public long getlastmodified()   //返回资源文件最后修改日期

(2)使用url类的openconnection方法创建一个urlconnection对象

urlconnection类是抽象类,创建一个urlconnection对象的操作由url类的openconnection()方法实现。声明如下:

 public urlconnection openconnection()throw java.io.ioexception

3.inetaddress类

inetaddress类表示internet上一台计算ip地址,提供将主机名解析其为ip地址的方法。声明如下:

public static InetAddress getlocalhost()throws unknownhostexception    //返回本地主机

public static gethostaddress()     //返回ip地址字符串

public static gethostname()        //返回主机名

InetAddress 类没有构造方法,由静态方法 getByName().getByAddress(),getlocalhost()等返回inetaddress实例,host参数指定参数主机名,如java.sun.com或ip地址字符串;addr参数指定分段的ip地址,要检查地址格式是否有效。再由inetaddress实例调用gethostaddress,gethostname(),返回ip地址或主机名。例如:

inetaddress.gethostname("java.sun.come").gethostaddress()              //返回指定主机名的ip地址字符串

inetaddress.getlocalhost().gethostaddress()                                           //返回本机的ip地址字符串

主机名到ip地址的解析,通过使用本机机器配置信息和网络命名服务(如域名系统dns,网络信息服务NIS)来实现。

inetaddress类的子类inet6Address使用ipv6格式地址。

.



1 0
原创粉丝点击