Тайм-аут соединения с сокетом - PullRequest
1 голос
/ 18 ноября 2010

В коде ниже.

Если значение тайм-аута равно 0 (newSocket (Address, 7010, 0); Время ожидания: «Общее время в миллисекундах = 1024» Если значение тайм-аута равно 1 (newSocket (Address, 7010, 1); Время ожидания: «Общее время в миллисекундах = 22»

Существуют ли какие-либо настройки ОС по умолчанию (Windows), которые могут сократить время ожидания для значения времени ожидания '0'. Пробовал несколько записей реестра LmhostsTimeout, TcpTimedWaitDelay безуспешно. Пожалуйста, помогите мне в решении этой проблемы.


import java.net.*;
import java.io.*;

public class TestConnection
{
public static void main (String a[])
{
long t1 = System.currentTimeMillis();
          try
          {
                  InetAddress Address = InetAddress.getLocalHost();
                  System.out.println("Host Address" + Address + " Port " + 7010);
                  newSocket(Address, 7010, 0);
      long t2 = System.currentTimeMillis();
      System.out.println("SenthilTS1=" + (t2-t1));

    }catch (Exception e)
          {
     long t2 = System.currentTimeMillis();
     System.out.println("Total Time in MilliSeconds =" + (t2-t1));
     //                e.printStackTrace();
          }
}

    /*package*/ static void initSocket(Socket sock) throws SocketException {
      try {
        sock.setTcpNoDelay(true);
      } catch (SocketException se) {
        try { sock.close(); } catch (IOException ignore) {}
        //CR283953. Differentiate that the exception is thrown while doing a
        //socket set operation.
        throw se;
      }
    }

      static  Socket newSocket(InetAddress address, int port,
                            int timeout) throws IOException
    {
      Socket sock = new Socket();
      initSocket(sock);
      InetSocketAddress ina = new InetSocketAddress(address, port);
   System.out.println("******** SocketMuxer.newSocket before Socket.connect() call TimeStamp (ms)=" + System.currentTimeMillis());
   try{
    sock.connect(ina, timeout);
    System.out.println("******** SocketMuxer.newSocket after connect() SUCCESS call TimeStamp (ms)=" + System.currentTimeMillis());
   }catch (IOException e)
   {
    System.out.println("******** SocketMuxer.newSocket after connect() FAILED call TimeStamp (ms) =" + System.currentTimeMillis());
    e.printStackTrace();
    throw e;
   }
   return sock;
    }
}

1 Ответ

0 голосов
/ 18 ноября 2010

Время ожидания подключения по умолчанию зависит от платформы.Это около 55-75 секунд, но это меняется.В Windows это контролируется записью реестра.Почему вы хотите изменить это?Если вы пишете код, почему вы не можете просто всегда использовать положительное время ожидания соединения?

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