Что может быть в случае исключения socketTimeout без сообщения? - PullRequest
0 голосов
/ 30 мая 2019

Когда я пишу TCP-соединение через язык Java, возникает исключение socketTimeout, но напечатанное исключение не имеет сообщения: java.net.SocketTimeoutException Я использую это: log.error (e); Другое явление заключается в том, что и время соединения, и время чтения нарушаются и становятся очень длинными

Я пытаюсь закрыть фоновое соединение и прочитать тайм-аут фонового режима, который выводит следующее исключение: java.net.SocketTimeoutException: чтение истекло / java.net.ConnectException: соединение отказано: подключиться ... они будет иметь какое-то сообщение

    Socket socket = null;
    String ip = null;
    int port = 0;
    OutputStream out = null;
    InputStream in = null;
    ByteArrayOutputStream baos = null;
    String response = null;
    int connTimeout = 3000;
    int readTimeout = 5000;
    try {
        socket = new Socket();
        ip = locationConfig.getHost();
        port = locationConfig.getPort();
        socket.setSendBufferSize(64 * 1024);
        socket.setReceiveBufferSize(64 * 1024);
        socket.setTcpNoDelay(true);
        socket.setSoTimeout(readTimeout);
        socket.setKeepAlive(true);
        socket.setSoLinger(true, 0);
        socket.setReuseAddress(false);
        socket.connect(new InetSocketAddress(ip, port), connTimeout);
        out = socket.getOutputStream();
        out.write("DETECT1".getBytes());
        out.flush();
        socket.shutdownOutput();
        in = socket.getInputStream();
        int length = 0;
        byte[] buffer = new byte[Constants.READ_BUFFER_MAX_SIZE];
        baos = new ByteArrayOutputStream();
        while ((length = in.read(buffer)) != -1) {
            baos.write(buffer, 0, length);
            baos.flush();
        }
        response = new String(baos.toByteArray());
    } catch (Exception e) {
        log.error(e)
    } finally {
        if (socket != null) {
            try {
                socket.close();
            } catch (IOException e) {
                log.error(e);
            }
        }
    }

Интересно, что могло быть причиной

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