SocketChannel - java.net.ConnectException: истекло время ожидания соединения: соединение - PullRequest
0 голосов
/ 04 ноября 2011

Наше приложение «иногда» истекает, у нас есть Java-клиент, подключающийся к демону unix, и по какой-то причине он время от времени выдает следующую ошибку:

SocketException: Cannot establish connection to daemon
java.net.ConnectException: Connection timed out: connect
    at sun.nio.ch.Net.connect(Native Method)
    at sun.nio.ch.SocketChannelImpl.connect(Unknown Source)
    at java.nio.channels.SocketChannel.open(Unknown Source)
    at ....
    at java.lang.Thread.run(Unknown Source)

Эта трассировка стекаследующий код:

  try
  {
    InetSocketAddress inetAddress = new InetSocketAddress(InetAddress.getByName(serverName), serverPort);
    socketChannel = SocketChannel.open(inetAddress); // <--- I think the problem is here
    pipeSck = socketChannel.socket();

  }
  catch (NoRouteToHostException e)//when the remote host cannot be reached or connection was refused
  {
    System.err.println("NoRouteToHostException: Cannot establish connection to daemon");
    e.printStackTrace();
    return 1; /* reply only with error */
  }
  catch (SocketException e)//when the remote host cannot be reached or connection was refused
  {
    System.err.println("SocketException: Cannot establish connection to daemon");
    e.printStackTrace();
    return 1; /* reply only with error */
  }

Это работает в 99% случаев ... есть идеи, почему мы получаем тайм-аут?

Спасибо!

Ответы [ 2 ]

1 голос
/ 04 ноября 2011

«Тайм-аут соединения» означает либо, что сеть временно отключена, что наиболее вероятно, либо, если она не работает в Windows, что очередь журнала ожидания сокета сервера заполнена, что может произойти при экстремальной нагрузке илиатаки типа «отказ в обслуживании».

0 голосов
/ 04 ноября 2011

Я бы согласился с Crollster, хотя вы также можете проверить, есть ли на хосте брандмауэр, который может вызывать проблемы. У шланга UNIX есть брандмауэр? Какие-нибудь промежуточные брандмауэры? Хост UNIX находится в локальной сети? Если нет, есть ли у вас доступ к Интернету? Сеть это весело. :)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...