|
2 / 2 / 2
Регистрация: 18.07.2013
Сообщений: 124
|
|||||||||||
UDP отправка на закрытый сокет (ERROR)16.10.2015, 22:23. Показов 5482. Ответов 19
Метки нет (Все метки)
Уже неделю не могу решить эту проблему!
Я клиентов на сервере обрабатываю асинхронно в ReceiveCallback(IAsyncResult ar), когда от клиента приходит сообщение, то проверяю если его нету в Dictionary, то добавляю туда его Socket и EndPoint, после через foreach рассылаю сообщение всем клиентам которые находятся в Dictionary Проблема в том, что если один из клиентов закроет приложение, то его порт становится недоступным и когда сервер пытается отправить пакеты на соккет того не доступного клиента, то выходит ошибка =( И самое интересное ошибка выходит не вот тут:
Additional information: Удаленный хост принудительно разорвал существующее подключение (видимо нужно каждый раз при отправке каким то образом проверять доступен ли соккет у клиента)
0
|
|||||||||||
| 16.10.2015, 22:23 | |
|
Ответы с готовыми решениями:
19
Как только происходит попытка создать сокет для UDP - сокет TCP сразу ломается (выдает 10093).
UDP сокет. Ошибка в программе. |
|
2 / 2 / 2
Регистрация: 18.07.2013
Сообщений: 124
|
|
| 20.10.2015, 09:47 [ТС] | |
|
UP!!!
0
|
|
|
2 / 2 / 2
Регистрация: 18.07.2013
Сообщений: 124
|
||||||
| 21.10.2015, 17:07 [ТС] | ||||||
|
Я понимаю, что в udp о соединениях не может быть и речи, я точно передаю по udp, вот -
Добавлено через 23 часа 12 минут Up!!!
0
|
||||||
|
2 / 2 / 2
Регистрация: 18.07.2013
Сообщений: 124
|
|
| 24.10.2015, 07:50 [ТС] | |
|
Up!!!
0
|
|
|
2 / 2 / 2
Регистрация: 18.07.2013
Сообщений: 124
|
|
| 27.10.2015, 13:25 [ТС] | |
|
Up =(
0
|
|
|
2 / 2 / 2
Регистрация: 18.07.2013
Сообщений: 124
|
|||||||||||
| 27.10.2015, 16:15 [ТС] | |||||||||||
|
Try и catch не помогает так как ошибка возникает не в момент отправки данных, а вот тут -
try и catch вот тут не срабатывают -
0
|
|||||||||||
|
2 / 2 / 2
Регистрация: 18.07.2013
Сообщений: 124
|
|
| 30.10.2015, 16:49 [ТС] | |
|
Up!!!
0
|
|
| 30.10.2015, 17:28 | ||
|
Не по теме: KinDer015, бросайте это дело, пока не посадили:D
0
|
||
| 03.11.2015, 12:17 [ТС] | |
|
Не по теме: Хах, если бы я делал торрент трекер, тогда бы стоило опасаться :D
0
|
|
|
|
|
| 03.11.2015, 12:39 | |
|
KinDer015, Выложите полностью рабочий проект, который можно запустить и потестить. Ваши отрывки кода ни о чем не говорят. Каждый кусок может быть правильным, а в целом - нет. К тому же UDP такая хитрая штука, возможны очень разные всякие неожиданности.
0
|
|
|
2 / 2 / 2
Регистрация: 18.07.2013
Сообщений: 124
|
||
| 24.12.2015, 19:14 [ТС] | ||
|
Уже 3 месяца не могу решить проблему с отправкой на не существующий соккет, уже клиент игры готов на 50%, а вот с сервером беда, если к примеру у одного из игроков крашится клиент, то на сервер ни какого сообщения не приходит, о том, что клиент от него отключился, соответственно на сервере в dictionary остается запись с соккетом этого клиента. Сервер отправляет пакеты всем игрокам и он крашится когда доходит до того не существующего соккета.
Может быть какую то проверку пилить при отправке, существует ли данный соккет. Вот ошибка:
0
|
||
|
46 / 14 / 15
Регистрация: 25.12.2015
Сообщений: 49
|
|
| 25.12.2015, 08:25 | |
|
Похоже, самый простой вариант решения проблемы - создать класс для хранения состояния клиента (если такого ещё нет),поместить в него как минимум два поля: сокет клиента и время последней успешной отправки/получения данных. В отдельном потоке (можно использовать таймер) проверять разницу между текущем временем и временем последнего получения/отправки данных). Например - если на протяжении одной минуты небыло получено/отправлено никаких данных, считать клиент отключеным.
0
|
|
|
2 / 2 / 2
Регистрация: 18.07.2013
Сообщений: 124
|
|||||||||||
| 25.12.2015, 11:08 [ТС] | |||||||||||
|
Спасибо, но способ не совсем подходящий, сервер принимает от клиента 30 сообщений и отправляет 15 в секунду.
Я уже пробовал try и cath поставить на цикл отправки, там ни каких ошибок не возникает -
0
|
|||||||||||
|
46 / 14 / 15
Регистрация: 25.12.2015
Сообщений: 49
|
|
| 25.12.2015, 11:53 | |
|
Значит исключение выбивает BeginReceiveFrom ? Какое именно ? Если это так, то можно поместить его в блок try / catch и просто отлавливать.
Чтобы ловить все исключения в Visual Studio нажать Ctrl + Alt + E и отметить "Common Language Runtime Exceptions", после чего запустить программу.
0
|
|
|
2 / 2 / 2
Регистрация: 18.07.2013
Сообщений: 124
|
|
| 25.12.2015, 13:16 [ТС] | |
|
да именно в нем - An unhandled exception of type 'System.Net.Sockets.SocketException' occurred in System.dll
Additional information: Удаленный хост принудительно разорвал существующее подключение Но смысл там ловить? когда уже цикл прошел, цикл перебирает всех клиентов и нужно именно там ловить через try и cath, но там не каких ошибок нету
0
|
|
|
46 / 14 / 15
Регистрация: 25.12.2015
Сообщений: 49
|
||||||
| 26.12.2015, 00:56 | ||||||
|
Как по мне, всётаки стоит ловить именно исключение. В класс где хранится состояние добавить переменную сигнализирующую о ошибке.
Ещё вариант - проверить подключен ли сокет уже когда перебираешь всех клиентов. Для определения того подключен ли сокет:
0
|
||||||
|
2 / 2 / 2
Регистрация: 18.07.2013
Сообщений: 124
|
|
| 31.12.2015, 18:44 [ТС] | |
|
Не работает, у меня udp соккеты, соединений нету
0
|
|
|
0 / 0 / 0
Регистрация: 21.12.2015
Сообщений: 2
|
|
| 03.01.2016, 20:06 | |
|
Помнится мне, что метод EndReceiveFrom возвращает количество переданных данных, и если оно равно 0, то пользователя можно удалять.
И возникает вопрос: Зачем использовать протокол, которые не гарантирует доставку данных, асинхронным образом? Помнится мне, что он предназначен для вещания в виде радиоволны)) По ссылке есть пример асинхронного tcp сервера для игры, можно посмотреть, как контролируется отключение пользователей https://bitbucket.org/JohnnyNu... l_game/src
0
|
|
| 03.01.2016, 20:06 | |
|
Помогаю со студенческими работами здесь
20
Производительность Try-Catch в Сокет UDP Один сокет для TCP и UDP Отправить сериализованный объект через сокет по UDP Как через UDP сокет соединить трёх клиентов без сервера? Отправка данных в сокет Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Загрузка PNG-файла с альфа-каналом с помощью библиотеки SDL3_image на Android
8Observer8 27.01.2026
Содержание блога
SDL3_image - это библиотека для загрузки и работы с изображениями. Эта пошаговая инструкция покажет, как загрузить и вывести на экран смартфона картинку с альфа-каналом, то есть с. . .
|
влияние грибов на сукцессию
anaschu 26.01.2026
Бифуркационные изменения массы гриба происходят тогда, когда мы уменьшаем массу компоста в 10 раз, а скорость прироста биомассы уменьшаем в три раза. Скорость прироста биомассы может уменьшаться за. . .
|
Воспроизведение звукового файла с помощью SDL3_mixer при касании экрана Android
8Observer8 26.01.2026
Содержание блога
SDL3_mixer - это библиотека я для воспроизведения аудио. В отличие от инструкции по добавлению текста код по проигрыванию звука уже содержится в шаблоне примера. Нужно только. . .
|
Установка Android SDK, NDK, JDK, CMake и т.д.
8Observer8 25.01.2026
Содержание блога
Перейдите по ссылке: https:/ / developer. android. com/ studio и в самом низу страницы кликните по архиву "commandlinetools-win-xxxxxx_latest. zip"
Извлеките архив и вы увидите. . .
|
|
Вывод текста со шрифтом TTF на Android с помощью библиотеки SDL3_ttf
8Observer8 25.01.2026
Содержание блога
Если у вас не установлены Android SDK, NDK, JDK, и т. д. то сделайте это по следующей инструкции: Установка Android SDK, NDK, JDK, CMake и т. д.
Сборка примера
Скачайте. . .
|
Использование SDL3-callbacks вместо функции main() на Android, Desktop и WebAssembly
8Observer8 24.01.2026
Содержание блога
Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
|
моя боль
iceja 24.01.2026
Выложила интерполяцию кубическими сплайнами www. iceja. net
REST сервисы временно не работают, только через Web.
Написала за 56 рабочих часов этот сайт с нуля. При помощи perplexity. ai PRO , при. . .
|
Модель сукцессии микоризы
anaschu 24.01.2026
Решили писать научную статью с неким РОманом
|