java 网络编程基础_Java网络编程基础(一)

Java SDK提供一些相对简单的API来完成网络功能,这些API存在于java.net包里面,Java所提供的网络功能可大致分为三类。基于HTTP协议的网络编程:这是三大类功能中最高级的一种。通过URL的网络资源表达方式,很容易确实网络上数据的位置。利用URL和URLConnection,Java程序可以直接读入网络上所放的数据,或者自己的数据传送到网络的另一端

基于TCP/IP协议的Socket编程:可以想象成两个不同的程序通过网络的通道,而这时传统网络程序中的最常用的方法。一般在TCP/IP网络协议的客户服务器软件采用Socket和ServerSocket作为交互的方式

基于UDP协议的Socket编程:Datagram是这些功能中最低级的一种。其他网络数据传送方式都假想在程序执行时,建立一条稳定的通道。电视以Datagram的方式传送数据时,只是把数据的目的地记录在数据包中,然后就直接放在网络上进行传输,系统不保证数据一定能够安全送到,也不能确定什么时候可以送到。

以上3个功能,我们将围绕3类核心进行讲解HTTP协议核心类:包括网页地址类URL、网络连接类URLConnection、HttpURLConnection、JarURLConnection

TCP/IP协议核心类:包括IP地址类InetAddress、客户端套接字Socket、服务器端套接字ServerSocket

UDP协议核心类:包括数据报类DatagramSocket、数据报套接字DatagramPacket、多播套接字MulticastSocket

1、基于HTTP协议的网络编程

本节将从URI和URL的网页地址格式讲起,然后分讲解URL、URLConnection等类,演示读取网页内容的方法。主要内容包括以下几项:网络地址URI→URL

URL网页地址类

URLConnection网页连接类

HttpURLConnection和JarURLConnection

URI、URL和URN是识别、定位和命名互联网上的资源的标准途径。

URI:是资源统一标识。它以某种统一的方式标识资源的简单字符串。URI以schema和冒号开头。

URI不能定位或者读写资源,这是统一的资源定位器(URL)的任务。

URL是一种URI,但是它的大纲组件是已知的网络协议,并且它把URI组件与某种协议处理程序相关联

URL地址可以包括如下形式的信息:通常URL可分为几个部分。上面的URL示例指示使用的协议是HTTP协议,并且该信息驻留在一台名为www.socs.uts.edu.au的主机上。主机的信息名称为/MosaiDocs,主机上此名称准确含义取决于协议和主机。该信息一般存储在文件中,但可以随时生成URL可以指定一个端口,它是用于建立到远程主机TCP链接的端口号。

应用程序也可以指定一个相对URL,它只是包含到达相对于另一个URL资源的足够信息

URL网页地址类

URL是UNiform Resource Locator(统一资源定位器)的缩写。类URL代表一个统一资源定位符,它是指向互联网资源的指针。

URL类为我们提供了不同的构造方法根据地址构造URL。public URL(String spec);

根据协议、主机名、端口和文件创建URL。public URL(String protocol,String host,String port,String file);

根据协议、主机名、文件创建URL,使用默认80端口。public URL(String protocol,String host,String file);

根据URL实例创建URL。该构造方法用于已经存在的URL对象context床架URL对象。示例如下:public URL(URL context,String spec);try{

URL base = new URL("

URL url3 = new URL(base,"#change");

}catch(MalformedURLExceptioin e){

e.printStackTrance();

}

查询URL对象信息

创建了URL对象,既可以使用该类的方法来操作对象,URL类中一些很基本的方法如下:获取此URL的授权部分:String getAuthority();

获取此URL的内容:Object getContent();

获取此URL的内容:Object getContent(Class[] classes);

获取与此URL关联协议的默认端口号:int getDefaultPort();

获取此URL的文件名:String getFile();

获取此URL的路径部分:String getPath();

获取此URL的端口号:int getPort();

获取此URL的协议名称:String getProtocol();

获取此URL的查询部分:String getQuery();

获取引用:String getRef();

获取URl的Userinfo:String getUserInfo();

URLConnection网页连接类

它代表应用程序和URL之间的通信链接。此类的实例可用于读取和写入此URL引用的资源。通常一个到URL的链接通常要几个步骤。(1)通过在URL在调用openConnection()方法创建链接对象URL类openConnection()用来返回一个URLConnection对象,它表示到URL所引用的远程对象的连接,其格式如下:

URLConnection openConnection();

(2)设置请求参数和一般请求参数属性

使用以下方法修改该配置参数:

void setAllowUserInteraction(boolean allowUserinteraction);//设置允许用户交互

void setDoInput(boolean doinput)//设置输入

void setDoOutput(boolean doOutput)//设置输出

void setIfModifiedSince(long ifmodifiedsince);//设置最新访问时间

void setUserCaches(boolean usercaches)//是否启用缓村(3)使用connect()方法建立到远程对象的实际连接void connection();//打开到此URL引用的资源的通信链接

(4)在建立到远程对象的链接之后,一下方法用于访问头字段和内容:Object getContent();//获取此URL链接的内容

某些头字段需要经常访问,使用如下方法:String getHeaderField(int n);//返回第n个头字段的值

String getHeaderField(String name);//返回指定的头字段的值

String getContentEncoding();返回content-encoding头字段的值

int getContentLength();返回content-length头字段的值

String getContentType();返回content-type头字段的值

long getDate();返回date头字段的值

代码示例import java.io.InputStream;

import java.net.URL;

import java.net.URLConnection;

public class TestNet {

public static void main(String[] args) {

// 演示URL

try {

//根据地址创建URL

URL url = new URL("http://www.360doc.com/content/14/0908/10/8358419_407786658.shtml");

//取得URLConnection

URLConnection conn = url.openConnection();

//打开连接

conn.connect();

//取得属性

System.out.println(conn.getContentLength());

System.out.println(conn.getContentType());

System.out.println(conn.getDate());

System.out.println(conn.getExpiration());

System.out.println(conn.getLastModified());

//获取URL

//读取网页数据

int e;

InputStream is = conn.getInputStream();

while((e = is.read()) != -1){

System.out.print((char) e);

}

is.close();

} catch (Exception e) {

// TODO: handle exception

}

}

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值