首页 > 代码库 > Java Socket

Java Socket

  Java最初是作为网络编程语言出现的,Java Socket可以实现网络上两个程序之间的数据交换,QQ等即时通讯软件都使用了Socket相关技术。Java.net包中提供了网络编程相关的四大功能类:InetAddress、URL、Sockets、Datagram。

一、InetAddress

   InetAddress类用于标识网络上的硬件资源,标识互联网协议(IP)地址。 该类没有构造方法

//获取本机的InetAddress实例
InetAddress address =InetAddress.getLocalHost();
address.getHostName();//获取计算机名
address.getHostAddress();//获取IP地址
byte[] bytes = address.getAddress();//获取字节数组形式的IP地址,以点分隔的四部分

//获取其他主机的InetAddress实例
InetAddress address2 =InetAddress.getByName("其他主机名");
InetAddress address3 =InetAddress.getByName("IP地址");

二、URL

  1. URL(Uniform Resource Locator)统一资源定位符,表示Internet上某一资源的地址,协议名:资源名称       

//创建一个URL的实例
URL baidu =new URL("http://www.baidu.com");
URL url =new URL(baidu,"/index.html?username=tom#test");//?表示参数,#表示锚点
url.getProtocol();//获取协议
url.getHost();//获取主机
url.getPort();//如果没有指定端口号,根据协议不同使用默认端口。此时getPort()方法的返回值为 -1
url.getPath();//获取文件路径
url.getFile();//文件名,包括文件路径+参数
url.getRef();//相对路径,就是锚点,即#号后面的内容
url.getQuery();//查询字符串,即参数

  2. 

//使用URL读取网页内容
//创建一个URL实例
URL url =new URL("http://www.baidu.com");
InputStream is = url.openStream();//通过openStream方法获取资源的字节输入流
InputStreamReader isr =newInputStreamReader(is,"UTF-8");//将字节输入流转换为字符输入流,如果不指定编码,中文可能会出现乱码
BufferedReader br =newBufferedReader(isr);//为字符输入流添加缓冲,提高读取效率
String data = http://www.mamicode.com/br.readLine();//读取数据
while(data!=null){
    System.out.println(data);//输出数据
    data =http://www.mamicode.com/ br.readerLine();
}
br.close();
isr.colose();
is.close();

 

三、

Java Socket