`

(转)SocketException的一些总结

 
阅读更多

      转自:http://blog.csdn.net/allanking666/article/details/5020864

         

          第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后),如果再继续写数据则抛出该异常。前两个异常的解决方法是首先确保程序退出前关闭所有的网络连接,其次是要检测对方的关闭连接操作,发现对方关闭连接后自己也要关闭该连接。

分享到:
评论

相关推荐

    获取本地IP

    ### 总结 通过上述两个示例可以看出,在C#中获取本地IP地址的方法相对简单,但需要注意的是,不同的场景可能需要选择不同的策略来确定最合适的IP地址。例如,在大多数情况下,我们可能更关心IPv4地址而非IPv6地址。...

    面试宝典新版.docx

    Java 基础部分知识点详解 ...总结:掌握这些Java基础知识对于面试至关重要,它们涵盖了语言核心、面向对象特性、异常处理和一些高级特性的应用,如反射。理解并能熟练运用这些知识点将有助于提升你在面试中的表现。

    java获取系统mac地址(win7版)

    总结来说,获取Java在Windows 7环境下获取MAC地址主要涉及`java.net.NetworkInterface`类,通过枚举所有网络接口,筛选出有效的MAC地址。虽然这个过程相对简单,但实际应用时需注意兼容性和权限问题,确保代码能在...

    java编程实现获取服务器IP地址及MAC地址的方法

    总结来说,Java中获取服务器IP地址和MAC地址主要依赖于`java.net`包中的`InetAddress`和`NetworkInterface`类。通过枚举网络接口和其对应的IP地址,我们可以获取到服务器的网络信息。对于多网卡环境,需要遍历所有...

    php与java获得电脑mac地址

    总结来说,获取MAC地址涉及对不同操作系统的理解以及利用适当的语言特性或系统调用。PHP主要依赖于shell命令,而Java则通过直接访问网络接口对象来获取。无论选择哪种方式,都需要确保处理可能的异常,并考虑到不同...

    C#Socket通信稳定完整版类库实例

    Socket通信中,异常处理是关键,常见的异常如`SocketException`需要妥善处理。例如,网络中断、超时、地址不可达等错误都需要捕获并处理。 6. **线程和异步操作** 为了提高性能和用户体验,Socket通信常使用多...

    TEST_TCP.rar_C#上位机_pushhof_tcp c# .net_test_tcp_上位机

    以下是一些关键知识点: 1. **TCP(传输控制协议)**:TCP是一种面向连接的、可靠的传输层协议,确保数据的顺序传输和无丢失。在C#中,我们可以使用`System.Net.Sockets.TcpClient`和`TcpListener`类来实现TCP...

    C# Socket编程实例

    - **异常处理**:在接收数据的过程中,使用了`try-catch`结构来捕获可能发生的`SocketException`,并在界面上显示错误信息。 - **资源管理**:在`Dispose()`方法中,确保在不再使用时关闭Socket连接和中止线程,这...

    C#实现QQ聊天

    总结起来,实现“C# P2P聊天工具”需要掌握C#语言基础,熟悉UI设计,了解网络编程,尤其是TCP/IP和套接字,还需要掌握异步编程、数据序列化、错误处理、多线程以及一定的安全措施。通过这个项目,开发者不仅可以巩固...

    .Net Sock Udp代码

    以下是一些关键知识点: 1. **创建UdpClient对象**:首先,我们需要创建一个`UdpClient`实例,并指定监听的IP地址和端口号,如`new UdpClient(12345)`,这将绑定到所有网络接口的12345端口。 2. **接收入站数据**...

    C#程序设计-3期(KC008) KC008110200021_如何根据IP地址获得本机域名.docx

    总结来说,C#通过`System.Net.Dns`和`IPHostEntry`类提供的功能,使得开发者能够方便地进行IP地址到域名的转换,这对于网络编程和系统集成具有重要的意义。在使用这些功能时,一定要注意异常处理,确保程序的健壮性...

    HMI - 数据库.rar

    5. 异常处理:考虑到网络波动和PLC响应,需要捕获并处理异常,如`SocketException`。 三、整合应用 将C#的数据库操作与PLC通讯结合,可以实现自动化系统中的数据存储和实时监控。例如,从PLC读取的生产数据可以被...

    java mail client

    #### 四、总结 Java Mail Client 示例代码展示了如何使用 Java 的网络编程功能构建一个简单的邮件发送系统。通过对 SMTP 协议的理解和应用,我们可以实现基本的邮件发送功能。此外,还可以进一步增强其功能,如增加 ...

    C# 编写服务器端接收文件

    - `SocketException`:当操作系统在访问Socket时出现错误时抛出。 - `ArgumentNullException`:当传入的参数为null时触发。 - `ObjectDisposedException`:当Socket已被关闭后仍尝试使用时抛出。 确保正确处理这些...

    java获取mac地址

    总结来说,Java获取MAC地址的方法有两种:一是通过操作系统特定的命令,如`ifconfig`或`ipconfig`;二是利用Java内置的`java.net.NetworkInterface`类。选择哪种方法取决于项目需求,比如是否需要跨平台兼容,或者对...

    FTP 文件传输 基于JAVA的网络编程

    因此,必须对可能出现的异常进行捕获和处理,如`SocketException`、`IOException`等。良好的错误处理机制能保证程序的健壮性。 性能优化: 在大量文件传输时,可以通过多线程处理并发请求,提高传输速度。Java的...

    C# TCP 通信(数据、文件的传输)

    因此,必须确保代码中包含适当的异常处理机制,捕获和处理SocketException和其他相关异常。 7. **安全性**: 在实际应用中,TCP通信可能需要考虑安全因素,如加密传输。可以使用SSL/TLS协议增强TCP连接的安全性,...

    c# WinForm 使用Socket实现简单实现服务端与客户端连接,实现消息发送,服务器客户端重连

    总结起来,这个项目展示了如何在C#的WinForm环境中使用Socket进行网络通信,包括服务端的监听、客户端的连接、消息发送和异常处理,特别是断线重连的机制,这对于开发稳定可靠的网络应用程序至关重要。通过实践和...

    C# 网口 通讯

    总结来说,C#中的网口通讯涉及了Socket编程、TCP/IP协议、网络数据传输以及错误处理等多个方面。通过理解和实践这些知识点,开发者可以构建出功能丰富的网络应用程序,包括简单的聊天应用。在实际开发中,还需关注...

Global site tag (gtag.js) - Google Analytics