Когда я пишу 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);
}
}
}
Интересно, что могло быть причиной