服务器关闭时处理拒绝连接的更好方法

极性

在 Java 中,使用 Socket 连接服务器并使用以下代码可能会产生java.net.ConnectException: Connection refused:服务器关闭或尚未启动的错误。

try {
   Socket clientSocket = new Socket(SERVER_IP, PORT);
} catch (IOException e) {
   e.printStackTrace();
}

处理此异常的最佳方法是什么?您如何继续尝试连接,直到服务器可用而不会出现此问题?

更新:

我的方法是使用UDP,将消息发送到给定的端口,然后在给定的时间内等待响应,循环直到在启动套接字之前得到响应。

我正在寻找更好的方法。

本塔耶

沿着这些路线的东西怎么样:

String SERVER_IP = "ip";
int PORT = 0;
int maxTries = 10;
int timeBeforeRetry = 5000; //ms
int count = 0;
Socket clientSocket = null;
while(clientSocket == null && count < maxTries) {
  try {
    clientSocket = new Socket(SERVER_IP, PORT);
  } catch(IOException e) {
    // Log if you want
    try {
      Thread.sleep(timeBeforeRetry);
    } catch(InterruptedException e) { /* can be ignored or logged I guess */ }
  }
  count++;
}

if(clientSocket == null) {
  // throw some kind of exception
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

有什么更好的方法来处理sshfs挂载的服务器断开连接?

尝试连接到蓝牙服务器时连接被拒绝

尝试连接到服务器时,Sshutle连接被拒绝

通过VPN连接时,FTP服务器连接被拒绝

连接到 Web 服务器时连接被拒绝

如何处理柯南服务器连接被拒绝?

Python Flask:拒绝服务器关闭时出错

尝试SSL连接时服务器强制关闭连接

psql:错误:服务器意外关闭了连接。这可能意味着服务器在处理请求之前或处理请求时异常终止

'UnknownError',消息:'处理命令时发生未知的服务器端错误。',orgStatusMessage:'webdriver.io拒绝连接

Spring集成,如果服务器关闭连接,在接收到任意事件时如何处理并打开

无法在127.0.0.1:0处连接到Redis:连接被拒绝(使用init脚本关闭带有unix套接字的redis服务器时)

与服务器localhost:8080的连接被拒绝

IRC服务器拒绝我的连接

Websocket服务器连接被拒绝

Netcat服务器连接被拒绝

JMeter连接Apache服务器被拒绝

Domino 服务器拒绝连接

尝试在Docker守护程序容器中连接http服务器时拒绝连接

OpenSSL errno 10054,尝试连接到我们的服务器时,连接被拒绝

引导时出现“ psycopg2.OperationalError:无法连接到服务器:连接被拒绝”错误

读取直到服务器关闭连接

phpseclib 连接被服务器关闭?

服务器关闭MTProto连接

服务器连接到Azure Postgres时意外关闭连接

尝试连接到 sftp 服务器时连接关闭。比赛组问题?

如何正确处理HTTP文件服务器上的客户端“连接:关闭”请求?

mysqldump:得到错误:1045:尝试连接服务器时拒绝用户访问(使用密码:YES)

使用Jmeter记录时出现“代理服务器拒绝连接”错误