Я отправляю ascii через сокет следующим образом:
outputStreamWriter(s + (char) 13);
outputStreamWriter.flush();
В поле может быть задержка от 10 до 30 секунд между flush () и данными, передаваемыми по сети (провереноиспользуя wireshark).
Чтобы проверить соединение с сокетом, я использую это:
public final boolean isConnected() {
try {
socket.sendUrgentData(32);
return true;
} catch (IOException e) {
return false;
}
Когда я избавляюсь от sendUrgentData и просто возвращаю true в isConnected (), задержка уходит.
Используя анализатор протокола, я заметил, что большие куски данных, которые я отправляю, в конечном итоге помечаются как срочные, точно так же, как один байт, который я отправляю для проверки сокета.Интуитивно противостоит задержке большие срочные пакеты.
Есть идеи?Спасибо, Андрей