本文为原创,如需转载,请注明作者和出处,谢谢!
上一篇: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网络编程是开发分布式应用...通过阅读"Java网络编程从入门到精通"这本书,你将系统地学习到以上所有内容,并通过实例和练习加深理解,从而在实际项目中灵活运用这些知识,成为一名精通Java网络编程的专业开发者。
本教程"Java网络编程从入门到精通"旨在帮助初学者和有经验的开发者深入理解这一领域,从基础知识到高级主题,提供了一套全面的学习资源。 在Java中,网络编程主要涉及以下核心知识点: 1. **Socket编程**:Java的...
JAVA网络编程资料(1)-Socket套接字—Java套接字编程.chm
C_socket编程是网络编程的基础,它...从创建套接字到建立连接,再到数据传输和连接管理,每一个环节都需要深入理解和实践。通过本教程,你将逐步成长为一名熟练的C_socket程序员,能够独立完成各种复杂的网络编程任务。
Java套接字编程是网络通信的核心技术之一,主要用于实现客户端与服务器之间的数据交换。本文将深入探讨Java中的Socket编程,包括基本概念、工作原理、创建和使用Socket的过程,以及常见问题和解决策略。 1. 基本...
Socket套接字是Java编程语言中用于网络通信的核心组件,它是实现客户端-服务器模型的基础。在Java中,Socket和ServerSocket类提供了套接字编程的基本功能。本文将深入探讨Java套接字编程的相关知识点,包括Socket和...
总之,Java的Socket套接字编程是构建网络应用的基础,它涉及到IP地址、端口、连接管理、数据传输和异常处理等多个方面。通过分析和实践提供的源代码,开发者能够深入了解网络通信的原理,并能创建自己的分布式系统。
《网络编程从入门到精通源代码》是一份涵盖了网络编程基础知识到高级技术的综合性学习资源。这份源代码集合旨在帮助初学者逐步掌握网络编程的核心概念和技术,同时也为有一定经验的开发者提供参考和实践素材。 网络...
2. **套接字API**:详细阐述了套接字编程接口,包括socket()函数创建套接字,bind()函数绑定本地地址,listen()函数准备接收连接,accept()函数接受连接请求,connect()函数发起连接,send()和recv()函数进行数据...
《UNIX网络编程 第1卷(第3版):套接字联网API》是网络编程领域的一本经典之作,由W. Richard Stevens撰写。这本书详细介绍了如何在UNIX系统中使用套接字API进行网络通信,是学习和理解网络编程的基础。 本书主要...
在IT领域,套接字(Socket)编程是网络通信的核心技术之一,它为应用程序提供了低级别的、进程间的通信机制。套接字允许不同计算机上的进程相互通信,无论是同在一个局域网还是跨越互联网。本篇文章将深入探讨套接字...
Java网络编程是开发分布式应用程序的关键技术,它涵盖了网络通信的基础概念和高级应用。...通过编写网络通信的示例程序,可以更好地理解和掌握网络编程的概念和技术,从而达到从入门到精通的目标。
总之,《UNIX网络编程卷1:套接字联网API(第3版)》及其配套程序是学习和精通UNIX系统网络编程的宝贵资源,无论你是初学者还是有经验的开发者,都能从中受益匪浅。通过实践这些示例,你可以提升自己的网络编程能力...
Java网络编程是开发分布式应用程序的关键技术,而Socket套接字是实现网络通信的基础。本学习资料包涵盖了关于Java网络编程的全面知识,包括Socket套接字的使用和网络协议的理解。 首先,我们要理解Java中的Socket。...
在探讨C# socket编程的过程中,我们首先需要了解的是如何操作IP地址,这是进行网络通信的基础。C#中的IPAddress类提供了方便的方法...对于希望从入门到精通C# socket编程的读者而言,这些内容是必须掌握的核心知识点。
### JAVA网络编程从入门到精通知识点详解 #### 一、Internet地址概述 互联网中的每一台设备都需要有一个唯一的标识符——IP地址。当前广泛使用的IPv4地址由四个字节组成,而未来的趋势是采用16个字节的IPv6地址。 ...
这个“Java学习从入门到精通”教程覆盖了Java编程的各个方面,无论是初学者还是有一定经验的开发者,都能从中受益。通过深入学习和实践,你将能够熟练掌握Java编程,为未来的开发工作打下坚实的基础。
Java作为一种广泛应用的编程语言,提供了丰富的API支持网络编程,尤其是对于套接字(Socket)编程的支持。本文将详细介绍Java套接字编程的基本概念、原理以及实际操作方法。 #### 二、Java网络编程概述 Java网络编程...