`

【转】Socket网络编程的一些常见异常

阅读更多

第1个异常是java.net.BindException:Address already in use: JVM_Bind。该异常发生在服务器端进行new ServerSocket(port)(port是一个0,65536的整型值)操作时。异常的原因是以为与port一样的一个端口已经被启动,并进行监听。此时用netstat –an命令,可以看到一个Listending状态的端口。只需要找一个没有被占用的端口就能解决这个问题。 

第2个异常是java.net.ConnectException: Connection refused: connect。该异常发生在客户端进行new Socket(ip, port)操作时,该异常发生的原因是或者具有ip地址的机器不能找到(也就是说从当前机器不存在到指定ip路由),或者是该ip存在,但找不到指定的端口进行监听。出现该问题,首先检查客户端的ip和port是否写错了,如果正确则从客户端ping一下服务器看是否能ping通,如果能ping通(服务服务器端把ping禁掉则需要另外的办法),则看在服务器端的监听指定端口的程序是否启动,这个肯定能解决这个问题。 

第3个异常是java.net.SocketException: Socket is closed,该异常在客户端和服务器均可能发生。异常的原因是己方主动关闭了连接后(调用了Socket的close方法)再对网络连接进行读写操作。

第4个异常是java.net.SocketException: (Connection reset或者Connect reset by peer:Socket write error)。该异常在客户端和服务器端均有可能发生,引起该异常的原因有两个,第一个就是如果一端的Socket被关闭(或主动关闭或者因为异常退出而引起的关闭),另一端仍发送数据,发送的第一个数据包引发该异常(Connect reset by peer)。另一个是一端退出,但退出时并未关闭该连接,另一端如果在从连接中读数据则抛出该异常(Connection reset)。简单的说就是在连接断开后的读和写操作引起的。 

第5个异常是java.net.SocketException: Broken pipe。该异常在客户端和服务器均有可能发生。在第4个异常的第一种情况中(也就是抛出SocketExcepton:Connect reset by peer:Socket write error后),如果再继续写数据则抛出该异常。前两个异常的解决方法是首先确保程序退出前关闭所有的网络连接,其次是要检测对方的关闭连接操作,发现对方关闭连接后自己也要关闭该连接。

 

文章写的不错,转自http://blog.csdn.net/allanking666/archive/2009/12/16/5020864.aspx

分享到:
评论

相关推荐

    Java+Socket+网络编程常见异常

    Java+Socket+网络编程常见异常

    Java Socket常见异常处理

    在java网络编程Socket通信中,通常会遇到以下异常情况:  第1个异常是 java.net.BindException:Address already in use: JVM_Bind。  该异常发生在服务器端进行new ServerSocket(port)(port是一个0,65536的...

    Socket客户端与服务器测试C#源代码

    实现测试代码:使用Socket编程接口,编写客户端和服务器端的测试代码。这些代码应包含测试用例中涉及的所有操作。 运行测试:启动客户端和服务器端程序,进行实际测试。可以通过手动或自动化方式发送测试数据,并...

    计算机二级考试的一些编程题(大学生专用)

    计算机二级考试是全国计算机等级考试中的一个重要级别,旨在检验参加考试者对计算机基础知识和编程能力的...同时,由于Java语言的跨平台性和网络编程能力,相关的网络编程题目也可能会出现,如Socket编程、多线程编程等。

    美河提供.智能手机操作系统编程Symbian及60系列1

    本忆较全面地覆盖了Symbian操作系统及编程等内容,主要包括开发环境、内存与资源管理、应用程序设计、控件、多媒体、网络与通信、消息等,并附有大量的编程实例。 本书的读者是高等院校相关专业的师生和软件开发人员...

    C#实例程序-30套-程序源码合集.zip

    网络编程的基本知识(如TCP/IP协议、Socket编程等) 多线程编程的技巧 数据库操作(如连接数据库、执行SQL语句等) GUI编程(如Windows窗体应用程序、WPF应用程序等) 通过学习这些示例,开发者可以逐步提高自己的C#...

    智能手机操作系统编程Symbian及60系列

    本忆较全面地覆盖了Symbian操作系统及编程等内容,主要包括开发环境、内存与资源管理、应用程序设计、控件、多媒体、网络与通信、消息等,并附有大量的编程实例。 本书的读者是高等院校相关专业的师生和软件开发人员...

    Java后端面试手册-Java基础知识

    网络编程:涉及Socket编程、TCP/IP协议、HTTP协议等网络相关知识。 性能优化和调优:介绍Java程序性能优化的方法和技 《面渣逆袭手册》V1.1.pdf 暗黑风格-图解网络.pdf 亮白风格-图解网络.pdf 图解计算机基础.pdf ...

    JAVA项目源码之本地监听与远程端口扫描的实现.rar

    实现方式:本地监听与远程端口扫描的实现可以借助Java Socket编程来完成。对于本地监听,可以创建一个服务器套接字并调用accept()方法来等待客户端的连接请求;对于远程端口扫描,可以创建一个客户端套接字并尝试...

    Qt设备状态检测系统源代码串口 网络TCP UDPModbus通信协议带有报警声音详细注释 设备状态检测源代码支持串口网口Tcp

    开发环境是Qt5.10.1,使用Qt自带的QSerialPort,使用网络的Socket编程,需要多媒体播放支持。 源代码中包含详细注释,使用说明,设计文档等。 请将源码放到纯英文路径下再编译。 3.使用介绍: 可直接运行在可执行...

    ZeroMQ(java)window库

    ZeroMQ(以下ZeroMQ简称ZMQ)是一个简单好用的传输层,像框架一样的一个socket library,他使得Socket编程更加简单、简洁和性能更高。(摘自百度百科) ZMQ官方网址http://zeromq.org/ ZMQ本身只提供了C++版本的下载,...

    JAVA基础课程讲义

    基于TCP协议的SOCKET编程和通信 193 UDP通讯的实现 201 思考作业 203 上机作业(分组完成,3人一组,周末完成) 204 第十一章 JAVA多媒体编程 205 字体 205 字体示例和效果 205 颜色 206 颜色编程示例 206 图形绘制 ...

    亮剑.NET深入体验与实战精要2

    10.1 Socket基本编程 384 10.1.1 Socket基本知识 384 10.1.2 Socket服务端开发步骤 386 10.1.3 Socket客户端开发步骤 388 10.2 异步Socket通信——实现MSN机器人 390 10.2.1 机器人服务端 390 10.2.2 客户端实现步骤...

    亮剑.NET深入体验与实战精要3

    10.1 Socket基本编程 384 10.1.1 Socket基本知识 384 10.1.2 Socket服务端开发步骤 386 10.1.3 Socket客户端开发步骤 388 10.2 异步Socket通信——实现MSN机器人 390 10.2.1 机器人服务端 390 10.2.2 客户端实现步骤...

    leetcode中国-AlphaGooo-php:个人php开发技术累积,不定期更新

    编程处理异常抛出,防止程序被中断 - 借助扩展读写excel - 对于一些输入或者输出的字符,防止其含有的\n\r字符,导致一些安全问题 - 关于PHP的设计模式 LeetCode - 10月份的题目和题解 PHP5.6 - 关于如何链接 oracle...

    java包与接口实验报告

    3)网络包(java.net):支持Internet的TCP/IP协议,用于实现Socket编程;提供了与Internet的接口,支持URL连接,WWW的即时访问,并且简化了用户/服务器模型的程序设计。 4)抽象图形用户接口包(javax.swing):实现了...

    java源码包---java 源码 大量 实例

     Java局域网通信——飞鸽传书源代码,大家都知道VB版、VC版还有Delphi版的飞鸽传书软件,但是Java版的确实不多,因此这个Java文件传输实例不可错过,Java网络编程技能的提升很有帮助。 Java聊天程序,包括服务端和...

    JAVA 范例大全 光盘 资源

    第13章 Java网络编程 306 实例110 获取IP地址和域名 306 实例111 获取网络资源(URL) 308 实例112 FTP文件传输模拟 311 实例113 自制浏览器 316 实例114 点对点通信(Socket基于TCP协议) 323 实例115 点...

    java源码包2

     Java局域网通信——飞鸽传书源代码,大家都知道VB版、VC版还有Delphi版的飞鸽传书软件,但是Java版的确实不多,因此这个Java文件传输实例不可错过,Java网络编程技能的提升很有帮助。 Java聊天程序,包括服务端和...

    java面试题

    54. socket编程 30 54.1. 什么是TCP/IP、UDP? 30 54.2. Socket在哪里呢? 31 54.3. Socket是什么呢? 32 54.4. socket的实现步骤 37 55. Servlet 38 55.1. Servlet工作流程 38 55.2. servlet的生命周期 38 55.3. ...

Global site tag (gtag.js) - Google Analytics