本文为原创,如需转载,请注明作者和出处,谢谢!
上一篇:Java网络编程从入门到精通(18):Socket类的getter和setter方法(2)
在Socket类中有很多方法在声明时使用throws抛出了一些异常,这些异常都是IOException的子类。在Socket类的方法中抛出最多的就是SocketException,其余还有七个异常可供Socket类的方法抛出。这些异常的继承关系如图1所示。其中灰色背景框所描述的例外就是Socket类的方法可能抛出的异常。
图1 异常类继承关系图
-
public class IOException extends Exception
这个异常是所有在Socket类的方法中抛出的异常的父类。因此,在使用Socket类时只要捕捉(catch)这个异常就可以了;当然,为了同时捕捉其它类中的方法的异常,也可以直接捕捉Exception。
- public class SocketException extends IOException
这个异常在Socket类的方法中使用得最频繁。它也代表了所有和网络有关的异常。但如果要想知道具体发生的哪一类的异常,就需要捕捉更具体的异常了。
- public class ConnectException extends SocketException
ConnectException异常通常发生在由于服务器忙而未响应或是服务器相应的监听端口未打开。如下面的语句将抛出一个ConnectException异常。
<!--<br />
<br />
Code highlighting produced by Actipro CodeHighlighter (freeware)<br />
http://www.CodeHighlighter.com/<br />
<br />
-->Socketsocket=newSocket("www.ptpress.com.cn",1234);
- public class BindException extends SocketException
这个异常在多个Socket或ServerSocket对象绑定在同一个端口,而且未打开SO_REUSEADDR选项时发生。如下面的四条语句将抛出一个BindException异常:
<!--<br />
<br />
Code highlighting produced by Actipro CodeHighlighter (freeware)<br />
http://www.CodeHighlighter.com/<br />
<br />
-->Socketsocket1=newSocket();
Socketsocket2=newSocket();
socket1.bind(newInetSocketAddress("127.0.0.1",1234));
socket2.bind(newInetSocketAddress("127.0.0.1",1234));
- public class NoRouteToHostException extends SocketException
这个异常在遇到防火墙或是路由无法找到主机的情况下发生。
- public class UnknownHostException extends IOException
这个异常在域名不正确时被抛出。如下面的语句将抛出一个UnKnownHostException异常:
<!--<br />
<br />
Code highlighting produced by Actipro CodeHighlighter (freeware)<br />
http://www.CodeHighlighter.com/<br />
<br />
-->Socketsocket1=newSocket("www.ptpress123.com.cn",80);
- public class ProtocolException extends IOException
这个异常并不经常被抛出。由于不明的原因,TCP/IP的数据包被破坏了,这时将抛出ProtocolException异常。
- public class SocketTimeoutException extends InterruptedIOException
如果在连接超时和读取数据超时时间过后,服务器仍然未响应,connect或read方法将抛出SocketTimeoutException异常。
下一篇:Java网络编程从入门到精通(20):HTTP协议简介
国内最棒的Google Android技术社区(eoeandroid),欢迎访问!《银河系列原创教程》发布《Java Web开发速学宝典》出版,欢迎定购
分享到:
相关推荐
Java网络编程从入门到精通 总共34章 文档中有例子说明 非常好的学习文档
JAVA网络编程资料(1)-Socket套接字—Java套接字编程.chm
socket 套接字 Java 套接字 编程 socket 套接字 Java 套接字 编程 socket 套接字 Java 套接字 编程 socket 套接字 Java 套接字 编程
C#socket编程从入门到精通,学习网络编程以及socket的可以看下
Socket套接字—Java套接字编程
C_socket编程从入门到精通
基于Java的Socket套接字编程 源代码
JAVA网络编程学习资料以及源代码Socket套接字网络协议;JAVA网络编程学习资料以及源代码Socket套接字网络协议
Java Socket编程经典的入门教程(包含源代码) Socket即套接字 java.net包的客户端Socket,服务端ServerSocket; 单线程套接字客户端和服务端的处理; 服务端多线程处理客户端套接字; 带有线程池处理客户端套接字;...
套接字socket编程文档
UNIX网络编程卷1:套接字联网API(第3版)书的配套程序
unix网络编程:卷1:套接字联网API,第三版,stevens的杰作,源码,学习网络编程的良师益友
套接字(Socket)是Java套接字网络编程的基础概念, Socket可以看成在两个程序进行通讯连接中的一个端点,一个程序将一段信息写入Socket中,该Socket将这段信息发送给另外一个Socket中,使这段信息能传送到其他程序...
【完整Python从入门到精通课件如下】 ...Python从入门到精通 第19章 网络编程.pptx Python从入门到精通 第20章 Web编程.pptx Python从入门到精通 第21章 Flask框架.pptx Python从入门到精通 第22章 e起去旅行网站.pptx
用java编写的基于UDP和TCP两种协议编写的Socket(网络编程)案列
java编程-socket-套接字-网络编程.docx
网络编程中,通常使用socket套接字编程,那么该如何使用呢?接下来我们做一个最基本的小程序实现其功能。博客地址:http://blog.csdn.net/bingdianlanxin,有问题欢迎留言!