java网络编程
Bee大前端
更好的生活需要你更多的知识来铺垫!
展开
-
Inet4Address类和Inet6Address类
了区分IPv4和IPv6地址,Java提供了两个类:Inet4Address和Inet6Address,它们都是InetAddress类的子类,这两个类的定义如下:public final class Inet4Address extends InetAddresspublic final class Inet6Address extends InetAddress转载 2015-01-27 15:04:20 · 7278 阅读 · 0 评论 -
使用getCanonicalHostName方法获得主机名
getCanonicalHostName方法和getHostName方法一样,也是得到远程主机的域名。但它们有一个区别。getCanonicalHostName得到的是主机名,而getHostName得到的主机别名。getCanonicalHostName的定义如下:public String getCanonicalHostName()转载 2015-01-27 11:57:21 · 2906 阅读 · 0 评论 -
使用Socket类接收和发送数据
网络应用分为客户端和服务端两部分,而Socket类是负责处理客户端通信的Java类。通过这个类可以连接到指定IP或域名的服务器上,并且可以和服务器互相发送和接受数据。在本文及后面的数篇文章中将详细讨论Socket类的使用,内容包括Socket类基础、各式各样的连接方式、get和set方法、连接过程中的超时以及关闭网络连接等。 在本文中,我们将讨论使用Socket类的基本步骤和方法。一转载 2015-01-27 16:26:18 · 3529 阅读 · 0 评论 -
多种多样的建立网络连接的方式
在上一篇文章中我们讨论了Socket类的基本用法,并给出的例子中使用Socket类连接服务器时使用了一种最简单的连接方式,也就是通过IP和端口号来连接服务器。而为了使连接服务器的方式更灵活,Socket类不仅可以通过自身的构造方法连接服务器,而且也可以通过connect方法来连接数据库。 一、通过构造方法连接服务器 我们可以通过6个重载构造函数以不同的方式来连接服务器。转载 2015-01-27 17:29:57 · 670 阅读 · 0 评论 -
Socket类的getter和setter方法(1)
在Java类中,getter和setter方法占了很大的比重。由于Java中没有定义属性的关键字;因此,getter和setter方法用于获得和设置Java类的属性值;如getName和setName方法用于设置name属性的值。如果某个属性只有getter方法,那这个属性是只读的;如果只有setter方法,那么这个属性是只写的。在Socket类中也有很多这样的属性来获得和Socket相关的信息,转载 2015-01-27 17:44:02 · 409 阅读 · 0 评论 -
实现HTTP断点续传下载工具(附源代码)
在前面的文章曾讨论了HTTP消息头的三个和断点继传有关的字段。一个是请求消息的字段Range,另两个是响应消息字段Accept-Ranges和Content-Range.其中Accept-Ranges用来断定Web服务器是否支持断点继传功能。在这里为了演示如何实现断点继传功能,假设Web服务器支持这个功能;因此,我们只使用Range和Content-Range来完成一个断点继传工具的开发。转载 2015-01-28 11:40:45 · 6119 阅读 · 0 评论 -
创建ServerSocket对象
ServerSocket类的构造方法有四种重载形式,它们的定义如下:public ServerSocket() throws IOExceptionpublic ServerSocket(int port) throws IOExceptionpublic ServerSocket(int port, int backlog) throws IOExceptio转载 2015-01-28 11:44:31 · 935 阅读 · 0 评论 -
在服务端接收和发送数据
在建立完ServerSocket对象后,通过accept方法返回的Socket对象,服务端就可以和客户端进行数据交互。 Socket类和ServerSocket类都有两个得到输入输出流的方法:getInputStream和getOutputStream.对于Socket类而言,使用getInputStream方法得到的InputStream是从服务端获取数据,而getOutputSt转载 2015-01-28 11:45:44 · 3176 阅读 · 1 评论 -
关闭服务端连接
在客户端和服务端的数据交互完成后,一般需要关闭网络连接。对于服务端来说,需要关闭Socket和ServerSocket. 在关闭Socket后,客户端并不会马上感知自已的Socket已经关闭,也就是说,在服务端的Socket关闭后,客户端的Socket的isClosed和isConnected方法仍然会分别得到false和true.但对已关闭的Socket的输入输出流进行操作会抛出一转载 2015-01-28 11:48:59 · 739 阅读 · 0 评论 -
获取ServerSocket信息的方法及FTP原理
与ServerSocket对象相关的信息有两个:绑定端口和绑定IP地址。绑定端口可以通过getLocalPort方法获得。绑定IP地址可以通过getInetAddress方法获得。 一、getLocalPort方法 getLocalPort方法的返回值可分为以下三种情况: 1. ServerSocket对象未绑定端口,getLocalPort方法的返回值为转载 2015-01-28 11:50:51 · 534 阅读 · 0 评论 -
服务端Socket的选项
ServerSocket类有以下三个选项: 1. SO_TIMEOUT: 设置accept方法的超时时间。 2. SO_REUSEADDR:设置服务端同一个端口是否可以多次绑定。 3. SO_RECBUF:设置接收缓冲区的大小。 一、SO_TIMEOUT选项 可以通过SeverSocket类的两个方法(setSoTimeo转载 2015-01-28 11:53:08 · 411 阅读 · 0 评论 -
定制accept方法
使用ServerSocket类的implAccept方法可以使用accept方法返回一个Socket子类对象。但implAccept是protected方法,因此,必须在ServerSocket类的子类中覆盖accept方法,然后在accept方法中使用implAccept方法重新设置Socket对象。implAccept方法的定义如下:protected final转载 2015-01-28 11:53:46 · 751 阅读 · 0 评论 -
非阻塞I/O简介
在网络应用中,一般可以采用同步I/O(阻塞I/O)和非阻塞I/O两种方式进行数据通讯。这两种方式并非互相排斥和互相取代。我们可以在平时的应用中单独采用其中一种通讯方式,也可以混合使用这两种通讯方式。在本文中就什么是非阻塞I/O以及为什么要使用这种通讯方式进行了介绍,在下一篇文章中给出了一个简单的例子来演示在网络应用中如何使用非阻塞I/O进行通讯。 一、什么是非阻塞I/O转载 2015-01-28 11:55:22 · 1327 阅读 · 0 评论 -
一个非阻塞I/O的例子
为了使读者更好地理解非阻塞I/O,本节给出了一个简单的例子用来演示如何将非阻塞I/O应用到网络程序中。读者可以先不必管这个例子的具体细节。因为这个例子的主要目的并不是讲解非阻塞I/O的使用,而是先让读者对非阻塞I/O有一个笼统的感性认识。在看完这个例子后,读者可能会有很多疑问,在本章后面的部分将会逐渐揭开这些迷团。这个例子的主要功能是访问新浪网,并将新浪网的首页在控制台上输出。转载 2015-01-28 11:55:43 · 892 阅读 · 0 评论 -
阻塞I/O的缓冲区(Buffer)
如果将同步I/O方式下的数据传输比做数据传输的零星方式(这里的零星是指在数据传输的过程中是以零星的字节方式进行的),那么就可以将非阻塞I/O方式下的数据传输比做数据传输的集装箱方式(在字节和低层数据传输之间,多了一层缓冲区,因此,可以将缓冲区看做是装载字节的集装箱)。大家可以想象,如果我们要运送比较少的货物,用集装箱好象有点不太合算,而如果要运送上百吨的货物,用集装箱来运送的成本会更低。在数据传输转载 2015-01-28 11:57:57 · 676 阅读 · 0 评论 -
在WebView中使用JavaScript
在WebView中使用JavaScript 如果你想要载入的页面中用了JavaScript,你必须为你的WebView使能JavaScript。 一旦使能之后,你也可以自己创建接口在你的应用和JavaScript代码间进行交互。 前情提要:使能JavaScript 上一篇文章已经说过,可以通过getSettings()获得WebSettings,然后用转载 2015-06-05 11:25:43 · 580 阅读 · 0 评论 -
Internet地址概述
所有连入Internet的终端设备(包括计算机、PDA、打印机以及其他的电子设备)都有一个唯一的索引,这个索引被称为IP地址。现在Internet上的IP地址大多由四个字节组成,这种IP地址叫做IPv4。除了这种由四个字节组成的IP,在Internet上还存在一种IP,这种IP由16个字节组成,叫做IPv6。IPv4和IPv6后面的数字是Internet协议(Internet Protocol,I转载 2015-01-26 17:37:32 · 739 阅读 · 0 评论 -
HTTP消息头字段
一、通用头字段 1. Connection 这个字段只在HTTP1.1协议中存在。它决定了客户端和服务器进行了一次会话后,服务器是否立即关闭网络连接。在客户端最直接的表现是使用read方法(readLine方法也是一样)读完客户端请求的Web资源后,是否立即返回-1(readLine返回null)。Connection有两个值:Close和Keep-Alive.当使用C转载 2015-01-27 18:02:56 · 738 阅读 · 0 评论 -
HTTP消息的格式
当用户在浏览器中输入一个基于HTTP协议的URL时(以http://开头的URL),就相当于通知器按着这个URL组织生成一个HTTP请求,并交过个请求发送到服务器;同时,等待服务器的响应。无论是请求还是响应,都统称为HTTP消息。 HTTP协议分为两部分: 1. HTTP请求消息。 2. HTTP响应消息。 一、HTTP请求消息转载 2015-01-27 17:53:12 · 1858 阅读 · 0 评论 -
使用NetworkInterface类获得网络接口信息
从JDK1.4开始,Java提供了一个NetworkInterface类。这个类可以得到本机所有的物理网络接口和虚拟机等软件利用本机的物理网络接口创建的逻辑网络接口的信息。一、创建NetworkInterface对象的两个静态方法NetworkInerface类和InetAddress一样,也没有public的构造方法。因此,必须通过它的两个静态方法来创建NetworkInterf转载 2015-01-27 15:13:55 · 13193 阅读 · 0 评论 -
使用isReachable方法探测主机是否可以连通
在J2SE5.0中的InetAddress类中增加了一个isReachable方法。可以使用这个方法来探测主机是否可以连通。这个方法有两个重载形式,它们的定义如下:public boolean isReachable(int timeout) throws IOExceptionpublic boolean isReachable(NetworkInterface netif, int转载 2015-01-27 15:17:20 · 3402 阅读 · 0 评论 -
创建InetAddress对象的四个静态方法
InetAddress类是Java中用于描述IP地址的类。它在java.net包中。在Java中分别用Inet4Address和Inet6Address类来描述IPv4和IPv6的地址。这两个类都是InetAddress的子类。由于InetAddress没有public的构造方法,因此,要想创建InetAddress对象,必须得依靠它的四个静态方法。InetAddress可以通过getLocalH转载 2015-01-26 18:00:38 · 1129 阅读 · 0 评论 -
java网络编程
网络编程 网络编程对于很多的初学者来说,都是很向往的一种编程技能,但是很多的初学者却因为很长一段时间无法进入网络编程的大门而放弃了对于该部分技术的学习。 在 学习网络编程以前,很多初学者可能觉得网络编程是比较复杂的系统工程,需要了解很多和网络相关的基础知识,其实这些都不是很必需的。首先来问一个问题:你 会打手机吗?很多人可能说肯定会啊,不就是按按电话转载 2015-01-26 16:45:04 · 471 阅读 · 0 评论 -
为什么要使用SocketAddress来管理网络地址
在使用Socket来连接服务器时最简单的方式就是直接使用IP和端口,但Socket类中的connect方法并未提供这种方式,而是使用SocketAddress类来向connect方法传递服务器的IP和端口。虽然这种方式从表面上看要麻烦一些,但它会给我们带来另外一个好处,那就是网络地址的重用。 所谓网络地址的重用表现在两个方面: 1. 通过建立一个SocketAddres转载 2015-01-27 17:39:39 · 668 阅读 · 0 评论 -
客户端套接字(Socket)的超时
客户端套接字的超时(timeout)就是指在客户端通过Socket和服务器进行通讯的过程中,由于网络延迟,网络阻塞等原因,造成服务器并未及时响应客户端的一种现象。在一段时间后,客户端由于未收到服务端的响应而抛出一个超时错误; 其中客户端所等待的时间就是超时时间。 由于生产超时错误的一端都是被动端;也就是说,这一端是在接收数据,而不是发送数据。对于客户端Socket来说,只有两个地转载 2015-01-27 17:42:48 · 7011 阅读 · 0 评论 -
套接字(Socket)的异常
在Socket类中有很多方法在声明时使用throws抛出了一些异常,这些异常都是IOException的子类。在Socket类的方法中抛出最多的就是SocketException,其余还有七个异常可供Socket类的方法抛出。这些异常的继承关系如图1所示。其中灰色背景框所描述的例外就是Socket类的方法可能抛出的异常。图1 异常类继承关系图 public cl转载 2015-01-27 17:47:34 · 1812 阅读 · 0 评论 -
实现HTTP模拟器
在讨论HTTP协议的具体请求和响应头字段之前,让我们先来利用以前所学的知识来实现一个HTTP模拟器。所谓HTTP模拟器就是可以在用户输入HTTP的请求消息后,由这个模拟器将HTTP请求发送给相应的服务器,再接收服务器的响应消息。这个HTTP模拟器有几下特点: 1. 可以手工输入HTTP请求,并向服务器发送。 2. 接收服务器的响应消息。 3. 消息头转载 2015-01-27 17:58:13 · 860 阅读 · 0 评论 -
用getAddress方法获得IP地址
getAddress方法和getHostAddress类似,它们的唯一区别是getHostAddress方法返回的是字符串形式的IP地址,而getAddress方法返回的是byte数组形式的IP地址。getAddress方法的定义如下:public byte[] getAddress() 这个方法返回的byte数组是有符号的。在Java转载 2015-01-27 14:54:40 · 1787 阅读 · 0 评论 -
使用isXxx方法判断地址类型
IP地址分为普通地址和特殊地址。在前面的文章中所使用的大多数都是普通的IP地址,在本文中将介绍如何利用InetAddress类提供的十个方法来确定一个IP地址是否是一个特殊的IP地址。html1%5C01%5Cclip_filelist.xml" rel=File-List>一、isAnyLocalAddress方法 当IP地址是通配符地址时返回true,否则返回fals转载 2015-01-27 15:02:10 · 534 阅读 · 0 评论 -
DNS缓存
在通过DNS查找域名的过程中,可能会经过多台中间DNS服务器才能找到指定的域名,因此,在DNS服务器上查找域名是非常昂贵的操作。在Java中为了缓解这个问题,提供了DNS缓存。当InetAddress类第一次使用某个域名(如www.csdn.net)创建InetAddress对象后,JVM就会将这个域名和它从DNS上获得的信息(如IP地址)都保存在DNS缓存中。当下一次InetAddress类再使转载 2015-01-27 11:12:50 · 3249 阅读 · 0 评论 -
使用InetAddress类的getHostName方法获得域名
该方法可以得到远程主机的域名,也可以得到本机名。getHostName方法的定义如下:public String getHostName() 下面是三种创建InetAddress对象的方式,在这三种方式中,getHostName返回的值是不同的。 1.使用getLocalHost方法创建InetAddress对象转载 2015-01-27 11:46:46 · 614 阅读 · 0 评论 -
用getHostAddress方法获得IP地址
这个方法用来得到主机的IP地址,这个IP地址可能是IPv4的地址,也可能是IPv6的地址。getHostAddress方法的定义如下:public String getHostAddress() 无论InetAddress对象是使用哪种方式创建的,getHostAddress方法都不会访问DNS服务器。如果想访问使用IPv6地址的远程主机,需要在操作系转载 2015-01-27 14:38:10 · 8871 阅读 · 0 评论 -
HTTP协议简介
一、什么是HTTP协议 HTTP协议是一种应用层协议,HTTP是HyperText Transfer Protocol(超文本传输协议)的英文缩写。HTTP可以通过传输层的TCP协议在客户端和服务器之间传输数据。HTTP协议主要用于Web浏览器和Web服务器之间的数据交换。我们在使用IE或Firefox浏览网页或下载Web资源时,通过在地址栏中输入http://host:port转载 2015-01-27 17:51:03 · 426 阅读 · 0 评论 -
99%的人都理解错了HTTP中GET与POST的区别
GET和POST是HTTP请求的两种基本方法,要说它们的区别,接触过WEB开发的人都能说出一二。最直观的区别就是GET把参数包含在URL中,POST通过request body传递参数。你可能自己写过无数个GET和POST请求,或者已经看过很多权威网站总结出的他们的区别,你非常清楚知道什么时候该用什么。当你在面试中被问到这个问题,你的内心充满了自信和喜悦。 你轻轻松松的转载 2016-11-09 17:07:02 · 244 阅读 · 0 评论