|
Почему DatagramSocket принимает не всё ?
|
|||
---|---|---|---|
#18+
Здравствуйте. Есть сервер: Код: java 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42.
Есть клиент: Код: java 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25.
Запускал 100500 раз, на выходе всегда send1 Остальное почему теряется и как сделать, что бы не терялось ? Спасибо! ... |
|||
:
Нравится:
Не нравится:
|
|||
07.03.2019, 10:58 |
|
Почему DatagramSocket принимает не всё ?
|
|||
---|---|---|---|
#18+
Серверный сокет Вы открываете один раз, а клиентский каждый раз. Порт, скорее всего, еще занят. ... |
|||
:
Нравится:
Не нравится:
|
|||
07.03.2019, 12:00 |
|
Почему DatagramSocket принимает не всё ?
|
|||
---|---|---|---|
#18+
bobo96, UDP протокол без подтверждения. Поставь задержку между send, хотя бы 50 млс. ... |
|||
:
Нравится:
Не нравится:
|
|||
07.03.2019, 12:25 |
|
Почему DatagramSocket принимает не всё ?
|
|||
---|---|---|---|
#18+
Это было первое, на что я грешил. Ставил задержку и по 3 сек. результат тот же. ... |
|||
:
Нравится:
Не нравится:
|
|||
07.03.2019, 12:47 |
|
Почему DatagramSocket принимает не всё ?
|
|||
---|---|---|---|
#18+
Больше вариантов ни у кого нет ? :( ... |
|||
:
Нравится:
Не нравится:
|
|||
07.03.2019, 19:52 |
|
Почему DatagramSocket принимает не всё ?
|
|||
---|---|---|---|
#18+
bobo96Больше вариантов ни у кого нет ? :( А почему у Вас порты на клиенте и сервере совпадают? ... |
|||
:
Нравится:
Не нравится:
|
|||
07.03.2019, 23:00 |
|
Почему DatagramSocket принимает не всё ?
|
|||
---|---|---|---|
#18+
bobo96, В датаграмных сокетах нет буферизации и повторов. И если принимающая сторона не Успела среагировать на следующий пакет то он будет потерян. Почему у тебя происходят потери - пока неясно. Но думаю что детальное логгирование с точностью до микросекунд покажет что некоторые операции принимающая сторона делает не настолько быстро Как необходимо. ... |
|||
:
Нравится:
Не нравится:
|
|||
08.03.2019, 00:43 |
|
Почему DatagramSocket принимает не всё ?
|
|||
---|---|---|---|
#18+
bobo96, Я может уже консервативен ...но вот в толк не возьму почему используете лишние элементы Вот нафиг executorService.submit(new ConnectThread(receivePacket)); Вы же уже объявили Runnable Почему не классически Код: java 1.
Во вложении пример рабочий пример Sender Receiver (Сфера приминения кода рассылать от сканированной сканером штрихкода(или вес от весов) по сети значение ) Используется гпупповой host 228.5.6.7 Чтоб кричало на всю сеть. Типа Ис на одном компе весы на другом ,но тот другой получает вес. Если хотите ограничить только локально в линуксе Код: xml 1. 2. 3.
Как в винде не знаю.Брэндмаэуром можно ограничить.(Правда в моем опыте иногда проскакивало) ... |
|||
:
Нравится:
Не нравится:
|
|||
08.03.2019, 10:05 |
|
Почему DatagramSocket принимает не всё ?
|
|||
---|---|---|---|
#18+
В приёмнике датаграм-сокета надо в первую очередь принимать пакеты и складывать их в кольцевой буфер. И эта операция должна быть максимально быстрой. Дальше - уже обрабатывать их как угодно с минимумом блокировок. И executor даже с 100 и с 1000 потоками нам здесь не помошник. ... |
|||
:
Нравится:
Не нравится:
|
|||
08.03.2019, 12:42 |
|
Почему DatagramSocket принимает не всё ?
|
|||
---|---|---|---|
#18+
Всем огромное спасибо! maytonВ приёмнике датаграм-сокета надо в первую очередь принимать пакеты и складывать их в кольцевой буфер. И эта операция должна быть максимально быстрой. Можно чутка подробнее про "принимать пакеты и складывать их в кольцевой буфер. И эта операция должна быть максимально быстрой." ? ... |
|||
:
Нравится:
Не нравится:
|
|||
08.03.2019, 15:52 |
|
Почему DatagramSocket принимает не всё ?
|
|||
---|---|---|---|
#18+
irbis_alВот нафиг executorService.submit(new ConnectThread(receivePacket)); Как-то давненько один уважаемый человек с этого форума посоветовал подобные вещи вот таким вот образом обрабатывать. ... |
|||
:
Нравится:
Не нравится:
|
|||
08.03.2019, 15:53 |
|
Почему DatagramSocket принимает не всё ?
|
|||
---|---|---|---|
#18+
bobo96Всем огромное спасибо! maytonВ приёмнике датаграм-сокета надо в первую очередь принимать пакеты и складывать их в кольцевой буфер. И эта операция должна быть максимально быстрой. Можно чутка подробнее про "принимать пакеты и складывать их в кольцевой буфер. И эта операция должна быть максимально быстрой." ? Давай пока отменим буферы. Новый эксперимент. Давайте толкнем не 6 а 600 сообщений. И закомментарим executor. И добавим счётчик. Далее по результатам посмотрим. ... |
|||
:
Нравится:
Не нравится:
|
|||
08.03.2019, 17:25 |
|
Почему DatagramSocket принимает не всё ?
|
|||
---|---|---|---|
#18+
ТС, разберитесь с портами для начала. Нельзя писать и читать в один порт по контракту для вебсокета на одном IP. Для примера у меня есть задание, которое мне дали на 4 часа в Сан Франциско написать UDP сервер-клиент посмотрите найдете много для себя интересного - я сам в шоке было дело пять лет назад https://github.com/SVyatkin/tcp-server-java-example Код с нио я честно скомуниздил у кого-то крутого перца Вам видимо надо что-то подобное приписать в своем коде Код: java 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14.
... |
|||
:
Нравится:
Не нравится:
|
|||
08.03.2019, 19:48 |
|
Почему DatagramSocket принимает не всё ?
|
|||
---|---|---|---|
#18+
bobo96, Я сегодня не поленился, копипастнул твой код в два проекта в двух окнах идеи паблик - всё работает. ... |
|||
:
Нравится:
Не нравится:
|
|||
08.03.2019, 20:01 |
|
Почему DatagramSocket принимает не всё ?
|
|||
---|---|---|---|
#18+
Еще раз всем огромное спасибо! Sergunkaразберитесь с портами для начала. Нельзя писать и читать в один порт по контракту для вебсокета на одном IP. Действительно, перенес клиента на andriod девайс, даже убрал таймаут, в итоге из 300т пакетов не пропал ни один! А как локально тогда такую конструкцию тестировать, на одной машине и клиент, и сервер, если нет возможности плевать откуда то извне ? ... |
|||
:
Нравится:
Не нравится:
|
|||
09.03.2019, 10:30 |
|
Почему DatagramSocket принимает не всё ?
|
|||
---|---|---|---|
#18+
Один на адресе 127.0.0.1, второй на 127.0.0.2 и т.д. ... |
|||
:
Нравится:
Не нравится:
|
|||
09.03.2019, 15:10 |
|
Почему DatagramSocket принимает не всё ?
|
|||
---|---|---|---|
#18+
bobo96Еще раз всем огромное спасибо! Sergunkaразберитесь с портами для начала. Нельзя писать и читать в один порт по контракту для вебсокета на одном IP. Действительно, перенес клиента на andriod девайс, даже убрал таймаут, в итоге из 300т пакетов не пропал ни один! А как локально тогда такую конструкцию тестировать, на одной машине и клиент, и сервер, если нет возможности плевать откуда то извне ? Поставьте разные порты. Контракт IP:port если изменить порт то все должно заработать для вебсокета на одном боксе. Код: java 1.
Просто тупо поставьте Код: java 1.
... |
|||
:
Нравится:
Не нравится:
|
|||
10.03.2019, 01:09 |
|
Почему DatagramSocket принимает не всё ?
|
|||
---|---|---|---|
#18+
SergunkaТС, разберитесь с портами для начала. Нельзя писать и читать в один порт по контракту для вебсокета на одном IP. Какой веб-сокет? Тут вообще тема не про веб-сокеты. И пример с каналами для tcp-проткола тоже не в тему. ... |
|||
:
Нравится:
Не нравится:
|
|||
10.03.2019, 01:47 |
|
Почему DatagramSocket принимает не всё ?
|
|||
---|---|---|---|
#18+
maytonSergunkaТС, разберитесь с портами для начала. Нельзя писать и читать в один порт по контракту для вебсокета на одном IP. Какой веб-сокет? Тут вообще тема не про веб-сокеты. И пример с каналами для tcp-проткола тоже не в тему. https://docs.oracle.com/javase/7/docs/api/java/net/DatagramSocket.html Не поленился открыл ... |
|||
:
Нравится:
Не нравится:
|
|||
10.03.2019, 02:24 |
|
Почему DatagramSocket принимает не всё ?
|
|||
---|---|---|---|
#18+
Вот пример про датасокет https://www.geeksforgeeks.org/java-net-datagramsocket-class-java/ Код: plsql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13.
Порты у клиента и сервера разные хотя сидят на одном боксе. ... |
|||
:
Нравится:
Не нравится:
|
|||
10.03.2019, 02:33 |
|
Почему DatagramSocket принимает не всё ?
|
|||
---|---|---|---|
#18+
Но у автора с портом нет проблем. Так же как нет проблем с тем исходником на который ты ссылается. Правда автору незачем на каждое сообщение клиента пересоздавать клиентский сокет. Он может Использовать один разделяемый объект DatagramSocket и много выделенных DatagramPackets. ... |
|||
:
Нравится:
Не нравится:
|
|||
10.03.2019, 10:58 |
|
|
start [/forum/topic.php?fid=59&msg=39784210&tid=2121446]: |
0ms |
get settings: |
8ms |
get forum list: |
12ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
99ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
46ms |
get tp. blocked users: |
1ms |
others: | 12ms |
total: | 195ms |
0 / 0 |