Сброс TCP-соединения из-за множественного подтверждения с сервера? - PullRequest
0 голосов
/ 05 октября 2018

Я пытаюсь установить соединение tcp между устройством gps и асинхронным java-сокетом.Когда сервер читает данные из канала после принятия соединения, он выдает следующую трассировку стека.

java.util.concurrent.ExecutionException: java.io.IOException: сброс соединения по одноранговому узлу на sun.nio.ch.PendingFuture.get (PendingFuture.java:185) в com.socket.Teltonika.Codec.NioSocketServer $ 1.completed (NioSocketServer.java:50) в com.socket.Teltonika.Codec.NioSocketServer $ 1.completed (NioSoavajj: 32) в sun.nio.ch.Invoker.invokeUnchecked (Invoker.java:126) в sun.nio.ch.Invoker $ 2.run (Invoker.java:218) в sun.nio.ch.AsynchronousChannelGroupImpl $ 1.run (AsynchronousChannelGroupImpl.java:112) в java.util.concurrent.ThreadPoolExecutor.runWorker (ThreadPoolExecutor.java:1149) в java.util.concurrent.ThreadPoolExecutor $ Worker.run (ThreadPoolExrlan.jun) jj.(Thread.java:748) Причина: java.io.IOException: Сброс соединения по пиру в sun.nio.ch.FileDispatcherImpl.read0 (собственный метод) в sun.nio.ch.SocketDispatcher.read (SocketDispatcher.java:39).)в sun.nio.ch.IOUtil.readIntoNativeBuffer (IOUtil.java:223) в sun.nio.ch.IOUtil.read (IOUtil.java:197) в sun.nio.ch.UnixAsynchronousSocketChannelImpl.finishRead (UnixAsynnelImp.Scket)) в sun.nio.ch.UnixAsynchronousSocketChannelImpl.finish (UnixAsynchronousSocketChannelImpl.java:191) в sun.nio.ch.UnixAsynchronousSocketChannelImpl.onEvent (UnixAsynchronousSocketChannelImpio.Hort.Holl.Pholl.jPP.PHP).Java: 293)

Когда я смотрю на tcpdump, я обнаруживаю, что есть сброс подключения от клиента.При каких условиях это может произойти?Также я вижу, что сервер отправляет подтверждение дважды, это может быть проблемой.xxxx - IP-адрес устройства GPS yyyy - IP-адрес моего сервера

17: 29: 38.129012 IP (tos 0x0, ttl 115, id 43952, смещение 0, флаги [DF], протокол TCP (6), длина 64) xxxxlive.vodafone.in.43187> yyyy4241: флаги [S], cksum 0xa168 (правильно), seq 1477993782, победа 10880, параметры [mss 1348, nop, wscale 0, nop, nop, sackOK, nop, nop, TS val 983851 ecr 0], длина 0

17: 29: 38.129056 IP (tos 0x0, ttl 64, id 0, смещение 0, флаги [DF], proto TCP (6), длина 60) гггг4241> xxxxlive.vodafone.in.43187: Флаги [S.], cksum 0xf0e9 (неверно -> 0x92e7), seq 1324366009, ack 1477993783, выигрыш 28960, варианты [mss 1460, sackOK, TS val 1043927932 ecr 983851, nop, wscale 7], длина 0

17: 29: 39.127403 IP (tos 0x0, ttl 64, id 0, смещение 0, флаги [DF], proto TCP (6), длина 60) yyyy4241> xxxxlive.vodafone.in.43187: Флаги [S.], cksum 0xf0e9 (неверно -> 0x91ed), seq 1324366009, ack 1477993783, win 28960, опции [mss 1460, sackOK, TS val 1043928182 ecr 983851, nop, wscale 7], длина 0

17: 29: 41.127397 IP (доs 0x0, ttl 64, id 0, смещение 0, флаги [DF], прото TCP (6), длина 60) yyyy4241> xxxxlive.vodafone.in.43187: Флаги [S.], cksum 0xf0e9 (неверно -> 0x8ff9), послед. 1324366009, кв. 1477993783, выигрыш 28960, опционы [mss 1460, sackOK, TS val 1043928682 ecr 983851, nop, wscale 7], длина 0

17: 29: 42.113169 IP (tos 0x0, ttl 115,id 43953, смещение 0, флаги [DF], прото TCP (6), длина 52) xxxxlive.vodafone.in.43187> yyyy4241: Flags [.], cksum 0x01e6 (правильный), ack 1, win 10880, параметры [nop, nop, TS val 984747 ecr 1043928682], длина 0

17: 29: 43,890057 IP (tos 0x0, ttl 115, id 0, смещение 0, флаги [нет], протокол TCP (6), длина 40) xxxxlive.vodafone.in.43187> гггг4241: флаги [R], cksum 0xac3c (правильно), seq 1477993783, выигрыш 65535, длина 0

Когда я отправляю данные на сервер с помощью команды netcap, я получаю данные идеально.

echo abctest-sumangala |nc yyyy 4241 // я получаю байты abctest-sumangala

...