|
2 / 2 / 0
Регистрация: 22.09.2013
Сообщений: 219
|
||||||||||||||||
Как только происходит попытка создать сокет для UDP - сокет TCP сразу ломается (выдает 10093).01.02.2016, 09:58. Показов 3862. Ответов 13
Метки нет (Все метки)
Добрый день.
Пытаюсь сделать соединение, использующее два канала обмена данными - TCP для управления в режиме клмиента, и UDP - для приема данных в режиме сервера. Собственно код выглядит так: Инициализация для TCP:
При запуске соединение TCP работает и управление собственно тоже - как запись, так и прием. Как только происходит попытка создать сокет для UDP - сокет TCP сразу ломается (выдает 10093). И подобное происходит при каждой попытке установить UDP соединение. Причем когда я UDP инициализировал как клиент - все работало без сбоев (в плане TCP сокета). Но меня интересует именно режим сервера. Подскажите в чем может быть проблема и как ее поправить. Добавлено через 5 часов 19 минут Пробовал делать так:
Добавлено через 1 минуту Думаю надо как то еще настроить... Если поможет - TCP соединяется с одним адресом, например 10.0.0.2, а UDP с другим, например 10.0.0.3... Добавлено через 12 часов 0 минут с bind понял - нужно установить либо INADDR_ANY, либо локальный адрес карты, либо 127.0.0.1 . Но это в любом случае не помогло бы, думаю при инициализации нужно как то ограничить ip-адреса, с которых принимаются данные, т.е. для TCP это прописано, т.к. это клиент, возможно нужно сделать так же для UDP, оставив его при этом сервером.
0
|
||||||||||||||||
| 01.02.2016, 09:58 | |
|
Ответы с готовыми решениями:
13
Один сокет для TCP и UDP TCP сокет: доходит только каждое пятое сообщение Как часто можно открывать TCP сокет? |
|
654 / 575 / 164
Регистрация: 13.12.2012
Сообщений: 2,124
|
||||
| 01.02.2016, 10:06 | ||||
|
1
|
||||
|
2 / 2 / 0
Регистрация: 22.09.2013
Сообщений: 219
|
||||||
| 01.02.2016, 11:12 [ТС] | ||||||
|
Да, Вы правы. Спасибо.
Перенес WSAStartup() в конструктор, стало лучше. Теперь при начальном запуске оба сокета подхватываются и работают совместно. Осталась проблема с реинициализацией. Т.е. когда я во время работы приложения делаю рестарт соединений - происходит следующее: 1) Для UDP соединения происходят функции stop, установка новых настроек (ip, port) и затем start; 2) Для TCP соединения делаю reinit - удаляю класс и вызываю конструктор заново с новыми настройками (ip,port). После этого устанавливается только одно соединение, а второе не запускается. Причем заранее непонятно какое включится, а какое - нет (возможно связано с тем - кто первый инициализируется). С чем это может быть связано? Собственно коды конструкторов и функции stop привел ниже. Они совпадают для обоих соединений.
Может проблема быть в том что WSAStartup вызывается для обоих соединений?
0
|
||||||
|
654 / 575 / 164
Регистрация: 13.12.2012
Сообщений: 2,124
|
|||
| 01.02.2016, 11:14 | |||
|
опять же
Добавлено через 59 секунд
0
|
|||
|
2 / 2 / 0
Регистрация: 22.09.2013
Сообщений: 219
|
||||||
| 01.02.2016, 12:04 [ТС] | ||||||
|
Сделал.
Теперь при реинициализации соединение устанавливается в обоих случаях. Но для TCP не всегда сразу - иногда с 5-6 попытки. Правильно выставлен параметр SO_REUSEADDR?
Вру, при первой реинициализации TCP встает сразу практически. После второй - приходится очень долго ждать. Реинициализации делаю последовательно с промежутком секунд в 15-30. Добавлено через 2 минуты Собственно засек по времени - почему то соединяется через минуту после предыдущего соединения.
0
|
||||||
|
654 / 575 / 164
Регистрация: 13.12.2012
Сообщений: 2,124
|
|
| 01.02.2016, 12:15 | |
|
0
|
|
|
2 / 2 / 0
Регистрация: 22.09.2013
Сообщений: 219
|
||||||
| 01.02.2016, 12:35 [ТС] | ||||||
|
Со стороны клиента
Добавлено через 2 минуты Есть параметр TCP alive check timeout. И у него пределы 1-99 мин. Но там выставлено 7, а реконнект ждет 1 мин. Поэтому думаю что это не то.
0
|
||||||
|
654 / 575 / 164
Регистрация: 13.12.2012
Сообщений: 2,124
|
|||
| 01.02.2016, 14:50 | |||
|
setsockopt
Добавлено через 45 секунд
0
|
|||
|
2 / 2 / 0
Регистрация: 22.09.2013
Сообщений: 219
|
|||||||
| 01.02.2016, 15:00 [ТС] | |||||||
|
Собственно не проходит условие
0
|
|||||||
|
654 / 575 / 164
Регистрация: 13.12.2012
Сообщений: 2,124
|
||
| 01.02.2016, 23:35 | ||
|
0
|
||
|
2 / 2 / 0
Регистрация: 22.09.2013
Сообщений: 219
|
||||||
| 02.02.2016, 10:05 [ТС] | ||||||
|
Т.е. как то так?
0
|
||||||
|
654 / 575 / 164
Регистрация: 13.12.2012
Сообщений: 2,124
|
||||||
| 02.02.2016, 10:44 | ||||||
1
|
||||||
|
2 / 2 / 0
Регистрация: 22.09.2013
Сообщений: 219
|
|
| 02.02.2016, 10:48 [ТС] | |
|
Понял, спасибо)) Буду пробовать сейчас, что-то забыл на эту функцию проверку добавить.
0
|
|
|
50 / 49 / 10
Регистрация: 24.01.2010
Сообщений: 225
|
|
| 04.02.2016, 16:18 | |
|
и ещё...
в строке 190, у Вас будет вылет в случае коллизий в сети, ударных нагрузок на сервак, при потере пакетов в сети и прочей фигни из реальной жизни. Причина банальна - в TCP нет пакетной передачи(для клиента сокета, коим Вы и являетесь). И иногда ваша длина принятых данных будет равняться меньше чем 128 байт...Редко но будет... чтоб было понятнее...В TCP возможно следующая картина: клиент отправляет 1000+300+500+200 байт сервер получает 100+1800+50+50 прочувствуйте ситуацию... удачи, она Вам потребуется (круглый)
0
|
|
| 04.02.2016, 16:18 | |
|
Помогаю со студенческими работами здесь
14
Как через UDP сокет соединить трёх клиентов без сервера? Материнка 775 сокет и процессор 771 сокет, Совместимость 4 планки Apacer DDR3 по 4Gb/1333MHz от старой МВ сокет 775 могу ли я их использовать на сокет 2011 UDP сокет. Ошибка в программе. Производительность Try-Catch в Сокет UDP Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
||||
|
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта
Симптом:
После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
|
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
|
Новый ноутбук
volvo 07.12.2025
Всем привет.
По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне:
Ryzen 5 7533HS
64 Gb DDR5
1Tb NVMe
16" Full HD Display
Win11 Pro
|
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
|
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
|
|
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов
На странице:
https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/
нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
|
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов.
. . .
|
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
|
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
|
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут.
В век Веб все очень привыкли к дизайну Single-Page-Application .
Быстренько разберем подход "на фреймах".
Мы делаем одну. . .
|