Java网络编程基础
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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格式如下:http://www.socs.uts.edu.au/MosaicDocs
通常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 } } }
本文出自 “阿酷博客源” 博客,请务必保留此出处http://aku28907.blog.51cto.com/5668513/1774561
以上是关于Java网络编程基础的主要内容,如果未能解决你的问题,请参考以下文章