Java Socket常见异常<1>

1.java.net.BindException:Address already in use: JVM_Bind 。 该 异 常 发 生 在 服 务 器 端 进 行 new ServerSocket(port) 或者 socket.bind(SocketAddress bindpoint)操作时。

原因:与 port 一样的一个端口已经被启动,并进行监听。此时用 netstat –an 命令,可以看到一个 Listending 状态的端口。只需要找一个没有被占用的端口就能解决这个问题
 
2.java.net.ConnectException: Connection refused: connect。该异常发生在客户端进行 new Socket(ip, port)或者 socket.connect(address,timeout)操作时,
原 因:指定 ip 地址的机器不能找到(也就是说从当前机器不存在到指定 ip 路由),或者是该 ip 存在,但找不到指定的端口进行监听。应该首先检查客户端的 ip 和 port是否写错了,假如正确则从客户端 ping 一下服务器看是否能 ping 通,假如能 ping 通(服务服务器端把 ping 禁掉则需要另外的办法),则 看在服务器端的监听指定端口的程序是否启动。
 
3..java.net.SocketException: Socket is closed ,该异常在客户端和服务器均可能发生。异常的原因是己方主动关闭了连接后(调用了 Socket 的 close 方法)再对网络连接进行读写操作。
 

转载于:https://www.cnblogs.com/HackHer/p/5061342.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Java中使用Socket进行心跳监控是一种常见的机制,用于检测和维持网络连接的存活状态。以下是一个简单的示例代码,演示了如何使用Socket实现心跳监控: ```java import java.io.IOException; import java.io.InputStream; import java.io.OutputStream; import java.net.Socket; public class SocketHeartbeatMonitor { private static final String SERVER_HOST = "localhost"; // 服务器主机名或IP地址 private static final int SERVER_PORT = 8080; // 服务器端口号 private static final int HEARTBEAT_INTERVAL = 5000; // 心跳间隔时间,单位为毫秒 public static void main(String[] args) { startHeartbeat(); // 其他业务逻辑 } private static void startHeartbeat() { try (Socket socket = new Socket(SERVER_HOST, SERVER_PORT)) { while (true) { sendHeartbeat(socket); Thread.sleep(HEARTBEAT_INTERVAL); } } catch (IOException | InterruptedException e) { e.printStackTrace(); // 处理异常情况 } } private static void sendHeartbeat(Socket socket) throws IOException { OutputStream outputStream = socket.getOutputStream(); InputStream inputStream = socket.getInputStream(); // 发送心跳信号 String heartbeatMessage = "Heartbeat"; outputStream.write(heartbeatMessage.getBytes()); outputStream.flush(); // 接收心跳响应 byte[] buffer = new byte[1024]; int bytesRead = inputStream.read(buffer); if (bytesRead > 0) { String response = new String(buffer, 0, bytesRead); System.out.println("Received heartbeat response: " + response); } } } ``` 在上述示例中,`startHeartbeat()`方法通过创建Socket连接到指定的服务器主机和端口。然后在一个无限循环中,每隔一段时间发送心跳信号给服务器。`sendHeartbeat()`方法负责发送心跳信号,并接收服务器返回的心跳响应。 你可以根据实际情况修改代码中的服务器主机名、端口号和心跳间隔时间,以及在接收到心跳响应后的处理逻辑。 注意,在实际应用中,你可能需要添加异常处理、超时控制、重连机制等来增强代码的健壮性和可靠性。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值