Я посылаю ASCII через сокет так:Java Оправа Задержка продолжала
outputStreamWriter(s + (char) 13);
outputStreamWriter.flush();
в поле, может быть от 10 до 30 секундной задержки между Flush() и данных, посылаемых по сети (проверяется с помощью wirehark).
Для того, чтобы проверить подключение к сокету Я использую это:
public final boolean isConnected() {
try {
socket.sendUrgentData(32);
return true;
} catch (IOException e) {
return false;
}
Когда я избавляюсь от sendUrgentData и просто возвращает истину в IsConnected(), задержка уходит.
Используя анализатор протоколов, я заметил, что большие куски данных, которые я отправляю, становятся помеченными как срочные, как один байт, который я отправляю для проверки сокета. Счетчик интуитивно - это большие срочные пакеты, которые в конечном итоге задерживаются.
Любые идеи? Спасибо, Andrew
Извините, я должен был упомянуть, я установил TcpNoDelay (true), и задержка все еще там. – andrewmara