3

При стандартном TCP-соединении между сервером и клиентом у меня возникает такая проблема: SYN-ACK не получен от клиента, а отправлен с сервера. Я видел это на Wireshark как с сервера, так и с клиента.

При использовании другого клиента TCP (например, telnet) от клиентского ПК получен SYN-ACK, и соединение работает. Также смена роутера работает с первым клиентом.

Я не уверен, но основное различие между двумя клиентами - это запрос SYN. В первом случае он имеет len=0 в Wireshark, в то время как len не равно нулю при использовании telnet.

Есть ли способ, которым я могу использовать любой маршрутизатор с сервером (java) и первым клиентом, написанным на C # (возможно, с изменением некоторых параметров)?

Изменить: сервер и клиент находятся в двух разных сетях, и я мог проверить обе. Между ними нет брандмауэра. То, что len=0 в SYN - единственное, что меня беспокоит. Я не думаю, что это может быть разрешено.

1 ответ1

0

Трудно сказать, какое поле LEN вы читаете, не видя фактического захвата. Wireshark, возможно, переключил диссекторов в какой-то момент, и теперь вы читаете что-то другое, чем вы ожидаете.

Я бы не стал слишком глубоко вникать в трассировку протокола, когда вы пытаетесь написать приложение. Если вы можете подключиться через telnet, сетевые уровни работают, и проблема, скорее всего, в вашем коде.

Попробуйте создать другое приложение, которое упрощает уравнение до ничего, кроме сокета, и посмотрите, может ли оно подключиться. Даже если он не отправляет / не получает полезный контент, любое соединение вообще является прогрессом.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .