java提供的网络功能有三大类:URL、Socket、Datagram
URL是三大功能中最高级的一种,通过URL ,java程序可以直接送出或读入网络上的数据
Socket是传统网络程序最常用的方式,可以想象为两个不同的程序通过网络的通信信道
Datagram是更低级的网络传输方式,它把数据的目的记录在数据包中,然后直接放在网上
URL编程
在WWW上,每一信息资源都有统一且唯一的地址,该地址就叫URL(Uniform Resource Locator),是WWW的统一资源定位符
URL由4部分组成:资源类型、存放资源的主机域名、资源文件名和端口。
例如,http://61.135.169.125:80/img/baidu_logo.gif
- http 表示该资源类型是超文本信息
- 61.135.169.125(www.baidu.com) 是百度的主机域名
- 80 表示HTTP协议的端口号
- /img/baidu_logo.gif 表示资源文件名
URL类
<span style="font-size:12px;">import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.net.URL;
//URLReader 获取网页并按行打印
public class test {
public static void main(String[] args) throws Exception{
//URL数据->InputStreamReader对象->BufferedReader对象->程序处理
URL hfut = new URL("http://www.baidu.com");
InputStreamReader is = new InputStreamReader(hfut.openStream());
BufferedReader br = new BufferedReader(is);
String data;
//打印输出HTML
while((data=br.readLine())!=null)
System.out.println(data);
//关闭缓冲区
br.close();
}
}</span>
URLConnection类
使用URL类可以简单地获得信息,但如果在获取到信息的同时还能向远程的计算机节点传送信息,就需要使用URLConnection类
创建URLConnection类的对象,先创建一个URL对象,然后调用该对象的openConnection()方法就会返回一个对应URL地址的URLConnection对象
<span style="font-size:12px;">import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.net.URL;
import java.net.URLConnection;
</span><pre name="code" class="java"><span style="font-size:12px;">//使用java.net.URLConnection连接到互联网,获取网页并按行打印</span>
public class test {
public static void main(String[] args) throws Exception{
//URL数据->URLConnection对象->InputStreamReader->BufferedReader
URL hfut = new URL("http://www.baidu.com");
URLConnection uc = hfut.openConnection();
InputStreamReader is = new InputStreamReader(uc.getInputStream());
BufferedReader br = new BufferedReader(is);
String data;
while((data=br.readLine())!=null)
System.out.println(data);
br.close();
}
}
基于Socket的网络通信
当程序需要建立网络连接时,必须有一台机器运行一个程序,随时等候连接,而另一端的程序则对其发出连接请求,同电话系统类似
建立连接的过程:
- 服务器端生成一个ServerSocket实例对象,随时监听客户端的连接请求
- 客户端生成一个Socket实例对象,并发出连接请求
- 服务器端通过accept()方法接收到客户端的请求后,开辟一个接口与之进行连接,并生成所需要的I/O数据流
- 通信都是通过一对InputStream()和OutputStream()进行的。通信结束后,两端分别关闭对应的Socket接口
Socket通信过程
java简单的C/S的交互
在java中,基于TCP协议实现网络通信的类有两个:在客户端的Socket类和在服务端的ServerSocket类
URL与Socket通信的区别
通信方式
- Socket在服务器端运行通信程序,不停地监听客户端的连接请求,等待客户端的连接请求,当客户端提出请求时,马上连接并通信
- URL进行通信时,被动等待客户端的请求
连接数
- Socket服务器可以同时与多个客户端进行相互通信
- URL通信方式是服务器只能与一个客户端进行通信