JAVA网络编程——URL

本文深入探讨了Java中URL类的构造函数、属性获取方法及Internet寻址方式,通过实例展示了如何使用URL类的openStream()与openConnection()方法访问网络资源,同时介绍了InetAddress类的操作方法,提供了具体的程序代码示例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1、创建URL对象

URL类有多种形式的构造函数:

(1) URL ( String url)
  //url代表一个绝对地址,URL对象直接指向这个资源,如:
  URL urll=new URL(http://www.cqwu.edu.cn);

(2) URL ( URL baseURL , String relativeURL)
 // 其中,baseURL代表绝对地址,relativeURL代表相对地址。如:
  URL urll=new URL(http://www.cqwu.edu.cn);
  URL lib=new URL(urll , "library / library.asp");

(3) URL ( String protocol , String host , String file)
  //其中,protocol代表通信协议,host代表主机名,file代表文件名。如:
  new URL ("http" , www.cqwu.edu.cn, "/ test / test.asp");

(4) URL ( String protocol , String host , int port , String file)
  URL lib = new URL ("http" , www.cqwu.edu.cn, 80 , "/ test / test.asp");

2、获取URL对象的属性

getDefaultPort(): 返回默认的端口号。
getFile(): 获得URL指定资源的完整文件名。
getHost(): 返回主机名。
getPath(): 返回指定资源的文件目录和文件名。
getPort(): 返回端口号,默认为-1。
getProtocol(): 返回表示URL中协议的字符串对象。
getRef(): 返回URL中的HTML文档标记,即#号标记。
getUserInfo: 返回用户信息。
toString: 返回完整的URL字符串。

二、Internet寻址

    java.net包可以用32位int形式来操作32位的IP地址(即Internet主机地址)。类InetAddress实际上是可以把Internet地址换算成代表该地址的对象。Java就是靠这个类来显示Internet地址已经相关信息的。
 InetAddress有以下常用方法:
  getAddress(): 返回IP地址的字节形式。
  getAllByName(): 返回指定主机名的IP地址。
  getbyAddress(): 返回指定字节数组的IP地址形式。
  getByName(): 返回指定主机名的IP地址对象。
  getHostAddress(): 返回主机地址的字符串形式。
  getLocalHost(): 返回当前主机名。
  hastCode(): 返回InetAddress对象的哈希码。
  toString: 返回地址转换成的字符串。
  InetAddress类没有提供返回构造函数,所以不能用new()方法来创建它的对象,而只可以调用静态方法    getLocalHost()、getByName()、getByAddress()等来生成InetAddress类的实质。

程序代码

import java.net.*;
import java.io.*;
public class InetAddDemo //extends Applet
{
 public void testOperate()
 {
  try
  {
   InetAddress address=InetAddress.getLocalHost();
   log("本机地址字符串:"+address.getHostAddress());
   log("本机主机名:"+address.getHostName());
   log("本机主机名:"+address.getLocalHost());
   log("哈希码:"+address.hashCode());
   byte b[]=address.getAddress();
   System.out.println("字符形式:"+b);
   log("地址字符串:"+address.toString());
  }
  catch(Exception e)
  {
   //e.printStackTrace("不能打开这个URL");
  }
 }
 
 public void log(String strInfo)
 {
  System.out.println(strInfo);
 }
 
 public static void main(String args[])
 {
  InetAddDemo IAdd=new InetAddDemo();
  IAdd.testOperate();
 }
}

有两种方法可以用来访问Internet。

       一是利用URL类的openStream()方法;二是使用openConnection()方法创建一个URLConnection类的对象。
其中,方法openStream()与指定的URL建立连接并返回InputStream类的对象,以从这一连接中读取数据。

程序代码

import java.net.*;
import java.io.*;

public class ReadURL
{
 public static void main(String args[]) throws Exception
 {
  try
  {
   URL url=new URL("http://www.baidu.com");
   InputStreamReader isr=new InputStreamReader(url.openStream());
   BufferedReader br=new BufferedReader(isr);
  
   String str;
   while((str=br.readLine())!=null)
   {
    System.out.println(str);
   }
  
   br.close();
   isr.close();
   }
   catch(Exception e)
   {
    System.out.println(e);
   }
 }
}

  上例首先创建URL对象url,并在其基础上打开输入流获取InputStreamReader对象,再由此对象创建BufferedReader对象br,从br中读取数据即可得到url所指定的资源文件,上面的openStream()方法只能读取网络资源。

    若要既能读取又能发送数据,则要用到URL类的openConnection()方法来创建一个 URLConnection类的对象,此对象在本地机和URL指定的远程节点建立一条HTTP协议的数据通道,可进行双向数据传输。
  类URLConnection提供了很多设置和获取连接参数的方法,最常用到的是getInputStream()和getOutputStream()方法,如:

URL sum=new URL("http://java.sum.com/cgi-bin/backwards");
URLConnection suncon=buaa.openConnection();
sumcon.setDoOutput(true);
DataInputStream dis=new DataInputStream(suncon.getInputStream());
PrintStream ps=new PrintStream(suncon.getOutputStream());
String str=dis.readLine();
ps.println("来自客户机的信息:.......");


转载于:https://my.oschina.net/u/1425545/blog/478280

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值