
java网络编程
文章平均质量分 73
tgww88
这个作者很懒,什么都没留下…
展开
-
为什么不能直接通过IP访问网站
在上一篇文章中通过getAllByName得到了www.youkuaiyun.com对应的四个IP地址。从理论上说,在IE(或其他的Web浏览器,如Firefox)的地址栏中输入这四个IP地址中的任何一个,都可能访问www.youkuaiyun.com。如输入http://211.100.26.124。但IE却返回了一个错误信息。在输入另外三个IP后,都会得到同样的错误信息。 这个错误并不是网页未找到错误(HTTP状原创 2012-09-26 17:13:28 · 3228 阅读 · 0 评论 -
HTTP消息头字段
一、通用头字段原创 2012-09-29 09:49:07 · 1539 阅读 · 0 评论 -
创建ServerSocket对象
ServerSocket类的构造方法有四种重载形式,它们的定义如下:public ServerSocket() throws IOExceptionpublic ServerSocket(int port) throws IOExceptionpublic ServerSocket(int port, int backlog) throws IOExceptionpublic Serve原创 2012-09-29 10:57:03 · 3359 阅读 · 0 评论 -
在服务端接收和发送数据
在建立完ServerSocket对象后,通过accept方法返回的Socket对象,服务端就可以和客户端进行数据交互。 Socket类和ServerSocket类都有两个得到输入输出流的方法:getInputStream和getOutputStream。对于Socket类而言,使用getInputStream方法得到的InputStream是从服务端获取数据,而getOutput原创 2012-09-29 11:09:46 · 1326 阅读 · 0 评论 -
使用Socket类接收和发送数据
网络应用分为客户端和服务端两部分,而Socket类是负责处理客户端通信的Java类。通过这个类可以连接到指定IP或域名的服务器上,并且可以和服务器互相发送和接收数据。在本文及后面的数篇文章中将详细讨论Socket类的使用,内容包括Socket类基础、各式各样的连接方式、get和set方法、连接过程中的超时以及关闭网络连接等。 在本文中,我们将讨论使用Socket类的基本步骤和原创 2012-09-27 14:45:43 · 1093 阅读 · 0 评论 -
客户端套接字(Socket)的超时
客户端套接字的超时(timeout)就是指在客户端通过Socket和服务器进行通讯的过程中,由于网络延迟,网络阻塞等原因,造成服务器并未及时响应客户端的一种现象。在一段时间后,客户端由于未收到服务端的响应而抛出一个超时错误;其中客户端所等待的时间就是超时时间。由于产生超时错误的一端都是被动端;也就是说,这一端是在接收数据,而不是发送数据。对于客户端Socket来说,只有两个地方是在接收数据原创 2012-09-28 13:18:43 · 1524 阅读 · 0 评论 -
套接字(Socket)的异常
在Socket类中有很多方法在声明时使用throws抛出了一些异常,这些异常都是IOException的子类。在Socket类的方法中抛出最多的就是SocketException,其余还有七个异常可供Socket类的方法抛出。这些异常的继承关系如图1所示。其中灰色背景框所描述的例外就是Socket类的方法可能抛出的异常。图1 异常类继承关系图public class IOEx原创 2012-09-28 17:19:16 · 970 阅读 · 0 评论 -
多种多样的建立网络连接的方式
在上一篇文章中我们讨论了Socket类的基本用法,并给出的例子中使用Socket类连接服务器时使用了一种最简单的连接方式,也就是通过IP和端口号来连接服务器。而为了使连接服务器的方式更灵活,Socket类不仅可以通过自身的构造方法连接服务器,而且也可以通过connect方法来连接数据库。一、通过构造方法连接服务器 我们可以通过6个重载构造函数以不同的方式来连接服务器。这6个重原创 2012-09-27 16:03:33 · 692 阅读 · 0 评论 -
Socket类的getter和setter方法
在Java类中,getter和setter方法占了很大的比重。由于Java中没有定义属性的关键字;因此,getter和setter方法用于获得和设置Java类的属性值;如getName和setName方法用于设置name属性的值。如果某个属性只有getter方法,那这个属性是只读的;如果只有setter方法,那么这个属性是只写的。在Socket类中也有很多这样的属性来获得和Socket相关的信息,原创 2012-09-28 14:22:46 · 974 阅读 · 0 评论 -
实现HTTP断点续传下载工具(附源代码)
在前面的文章曾讨论了HTTP消息头的三个和断点继传有关的字段。一个是请求消息的字段Range,另两个是响应消息字段Accept-Ranges和Content-Range。其中Accept-Ranges用来断定Web服务器是否支持断点继传功能。在这里为了演示如何实现断点继传功能,假设Web服务器支持这个功能;因此,我们只使用Range和Content-Range来完成一个断点继传工具的开发。原创 2012-09-29 09:50:18 · 999 阅读 · 0 评论 -
关闭服务端连接
在客户端和服务端的数据交互完成后,一般需要关闭网络连接。对于服务端来说,需要关闭Socket和ServerSocket。 在关闭Socket后,客户端并不会马上感知自已的Socket已经关闭,也就是说,在服务端的Socket关闭后,客户端的Socket的isClosed和isConnected方法仍然会分别得到false和true。但对已关闭的Socket的输入输出流进行操作会抛出一个Sock原创 2012-09-29 11:27:01 · 1014 阅读 · 0 评论 -
HTTP消息的格式
当用户在浏览器中输入一个基于HTTP协议的URL时(以http://开头的URL),就相当于通知浏览器按着这个URL组织生成一个HTTP请求,并将这个请求发送到服务器;同时,等待服务器的响应。无论是请求还是响应,都统称为HTTP消息。HTTP协议分为两部分: 1、 HTTP请求消息。 2、HTTP响应消息。一、HTTP请求消息原创 2012-09-29 09:47:31 · 1333 阅读 · 0 评论 -
HTTP协议简介
一、什么是HTTP协议HTTP协议是一种应用层协议,HTTP是HyperText Transfer Protocol(超文本传输协议)的英文缩写。HTTP可以通过传输层的TCP协议在客户端和服务器之间传输数据。HTTP协议主要用于Web浏览器和Web服务器之间的数据交换。我们在使用IE或Firefox浏览网页或下载Web资源时,通过在地址栏中输入http://host:port/pat原创 2012-09-29 08:54:46 · 730 阅读 · 0 评论 -
Internet地址概述
所有连入Internet的终端设备(包括计算机、PDA、打印机以及其他的电子设备)都有一个唯一的索引,这个索引被称为IP地址。现在Internet上的IP地址大多由四个字节组成,这种IP地址叫做IPv4。除了这种由四个字节组成的IP,在Internet上还存在一种IP,这种IP由16个字节组成,叫做IPv6。IPv4和IPv6后面的数字是Internet协议(Internet Protocol,I原创 2012-09-26 13:11:16 · 1708 阅读 · 18 评论 -
DNS缓存
在通过DNS查找域名的过程中,可能会经过多台中间DNS服务器才能找到指定的域名,因此,在DNS服务器上查找域名是非常昂贵的操作。在Java中为了缓解这个问题,提供了DNS缓存。当InetAddress类第一次使用某个域名(如www.youkuaiyun.com)创建InetAddress对象后,JVM就会将这个域名和它从DNS上获得的信息(如IP地址)都保存在DNS缓存中。当下一次InetAddress类再使原创 2012-09-26 17:18:31 · 663 阅读 · 0 评论 -
创建InetAddress对象的四个静态方法
InetAddress类是Java中用于描述IP地址的类。它在java.net包中。在Java中分别用Inet4Address和Inet6Address类来描述IPv4和IPv6的地址。这两个类都是InetAddress的子类。由于InetAddress没有public的构造方法,因此,要想创建InetAddress对象,必须得依靠它的四个静态方法。InetAddress可以通过getLocalH原创 2012-09-26 16:42:40 · 1940 阅读 · 0 评论 -
用getAddress方法获得IP地址
getAddress方法和getHostAddress类似,它们的唯一区别是getHostAddress方法返回的是字符串形式的IP地址,而getAddress方法返回的是byte数组形式的IP地址。getAddress方法的定义如下:public byte[] getAddress() 这个方法返回的byte数组是有符号的。在Java中byte类型的取值范围是-128〜原创 2012-09-27 11:12:08 · 4249 阅读 · 0 评论 -
使用NetworkInterface类获得网络接口信息
从JDK1.4开始,Java提供了一个NetworkInterface类。这个类可以得到本机所有的物理网络接口和虚拟机等软件利用本机的物理网络接口创建的逻辑网络接口的信息。一、创建NetworkInterface对象的两个静态方法 NetworkInerface类和InetAddress一样,也没有public的构造方法。因此,必须通过它的两个静态方法来创建Network原创 2012-09-27 14:11:21 · 2803 阅读 · 0 评论 -
Inet4Address类和Inet6Address类
为了区分IPv4和IPv6地址,Java提供了两个类:Inet4Address和Inet6Address,它们都是InetAddress类的子类,这两个类的定义如下:public final class Inet4Address extends InetAddresspublic final class Inet6Address extends InetAddress这两个类分别按着IP原创 2012-09-27 13:13:52 · 2471 阅读 · 0 评论 -
为什么要使用SocketAddress来管理网络地址
在使用Socket来连接服务器时最简单的方式就是直接使用IP和端口,但Socket类中的connect方法并未提供这种方式,而是使用SocketAddress类来向connect方法传递服务器的IP和端口。虽然这种方式从表面上看要麻烦一些,但它会给我们带来另外一个好处,那就是网络地址的重用。 所谓网络地址的重用表现在两个方面: 1、通过建立一个Socke原创 2012-09-28 08:47:35 · 878 阅读 · 0 评论 -
用getHostAddress方法获得IP地址
这个方法用来得到主机的IP地址,这个IP地址可能是IPv4的地址,也可能是IPv6的地址。getHostAddress方法的定义如下:public String getHostAddress() 无论InetAddress对象是使用哪种方式创建的,getHostAddress方法都不会访问DNS服务器。如果想访问使用IPv6地址的远程主机,需要在操作系统上安装IPv6协议。下面是原创 2012-09-27 11:06:14 · 11612 阅读 · 0 评论 -
使用isXxx方法判断地址类型
IP地址分为普通地址和特殊地址。在前面的文章中所使用的大多数都是普通的IP地址,在本文中将介绍如何利用InetAddress类提供的十个方法来确定一个IP地址是否是一个特殊的IP地址。1、isAnyLocalAddress方法 当IP地址是通配符地址时返回true,否则返回false。这个通配符地址对于拥有多个网络接口(如两块网卡)的计算机经常拥有。使用通配符地址可以允许原创 2012-09-27 11:43:13 · 1457 阅读 · 0 评论 -
使用isReachable方法探测主机是否可以连通
在J2SE5.0中的InetAddress类中增加了一个isReachable方法。可以使用这个方法来探测主机是否可以连通。这个方法有两个重载形式,它们的定义如下:public boolean isReachable(int timeout) throws IOExceptionpublic boolean isReachable(NetworkInterface netif, int tt原创 2012-09-27 14:36:21 · 1088 阅读 · 0 评论 -
使用InetAddress类获得域名的方法
一、getHostName() getHostName()方法可以得到远程主机的域名,也可以得到本机名。getHostName方法的定义如下:public String getHostName() 下面是三种创建InetAddress对象的方式,在这三种方式中,getHostName返回的值是不同的。1.使用getLocalHost方原创 2012-09-27 10:45:16 · 3147 阅读 · 0 评论