Ситуация выглядит следующим образом:
У меня есть Java-приложение, которое связывается по TCP с микроконтроллером со стеком TCP на нем. Стек на контроллере работает нормально, я могу разобраться.
Проблема в том, что: когда я прекращаю свое соединение с контроллером, я просто использую socket.close()
, и соединение прерывается, нет проблем. На моем Mac это тоже работает, но когда я проверяю Wireshark, происходит обычный процесс завершения [FIN,ACK]
- [ACK]
, за которым следует пакет [TCP Dup ACK]
, который, как утверждает Wireshark, принадлежит моему [FIN,ACK]
Пакет. Это происходит только на Mac и не происходит на компьютере с Windows, на виртуальной машине на моем Mac или на моем нетбуке ...
Могу ли я использовать какие-либо настройки, чтобы запретить передачу этого пакета Dup-ACK? На самом деле, он дергает стек в контроллере, утверждая, что закрытый сеанс все еще активен, и после 10 раз подключения к контроллеру в стеке больше нет места для приема новых соединений.
Я был бы очень благодарен, если бы кто-нибудь дал мне подсказку!