|
2 / 2 / 0
Регистрация: 23.09.2008
Сообщений: 54
|
|||||||||||
TCP (Клиент-сервер) - потеря данных18.04.2017, 09:21. Показов 3832. Ответов 22
Добрый день, меня интересует такой вопрос, я имею два приложения клиент-сервер написанные на TCP с использованием асинхронной передачи данных. Так вот, при запуске большого количества клиентов, данные начинают теряться.
Не могу понять почему. Ниже прилагаю код Клиент
0
|
|||||||||||
| 18.04.2017, 09:21 | |
|
Ответы с готовыми решениями:
22
TCP/IP клиент-сервер
Потеря данных при передаче по TCP |
|
1152 / 860 / 263
Регистрация: 30.04.2009
Сообщений: 3,603
|
|
| 18.04.2017, 22:52 | |
|
В многопоточной среде нужно делать синхронизацию доступа (чтения/записи) к общим ресурсам.
Для изменения значений переменных countClient, countServer используйте легковесную синхронизацию - Interlocked.Increment, тогда результат "сойдётся"
1
|
|
|
2 / 2 / 0
Регистрация: 23.09.2008
Сообщений: 54
|
||
| 19.04.2017, 10:32 [ТС] | ||
|
Добрый день, попробовал с данным методом проверить, потери все ровно имеются. Даже не знаю теперь в какую сторону думать.
0
|
||
|
1152 / 860 / 263
Регистрация: 30.04.2009
Сообщений: 3,603
|
|
| 19.04.2017, 11:20 | |
|
Попробовал запустить ваш код.
Без Interlocked примерно на 10-15 меньше : 9993/9983 С Interlocked: 10000/10000
0
|
|
|
2 / 2 / 0
Регистрация: 23.09.2008
Сообщений: 54
|
|
| 19.04.2017, 12:32 [ТС] | |
|
Вы запускали один клиент или множество?
Я также проверил с Interlocked на более мощной машине, запустив одновременно 40 клиентов. Все данные успешно вернулись. Скорее всего это из-за железа и операционной системы.
0
|
|
|
1152 / 860 / 263
Регистрация: 30.04.2009
Сообщений: 3,603
|
|
| 19.04.2017, 14:01 | |
|
Данные не могут просто так не вернуться, в любом случае вы получите какое то исключение либо при подключении либо при коммуникации. Например таймаут подключения, если сервер сильно загружен и не может ответить вовремя.
Для диагностики отключите на клиенте все логирование кроме catch Exception, так вместо "шума" увидите что с подключениями не так.
0
|
|
|
2 / 2 / 0
Регистрация: 23.09.2008
Сообщений: 54
|
||
| 19.04.2017, 14:03 [ТС] | ||
|
Мне выводит такое сообщение об ошибке
0
|
||
|
|
||
| 19.04.2017, 16:47 | ||
|
вы шлете utf8 а читаете побайтно, пока не увидете 0. думаю загвоздка в этом т.к. в тексте может прилететь ноль на определенном символе.
Добавлено через 7 минут
0
|
||
|
2 / 2 / 0
Регистрация: 23.09.2008
Сообщений: 54
|
||
| 19.04.2017, 16:48 [ТС] | ||
|
Попробовал убрать stream(write и read) для проверки, выдает так же ошибку
Думаю либо пробовать при ошибки снова пытаться отправлять сообщение или искать какой то другой выход.
0
|
||
|
2 / 2 / 0
Регистрация: 23.09.2008
Сообщений: 54
|
||
| 19.04.2017, 17:20 [ТС] | ||
|
Тут дело вовсе не в ReadByte. Убрав запись и чтение. Клиенту все ровно выводится данная ошибка, которую я писал выше.
Как понимаю при коннекте выводится ошибка Добавлено через 12 минут Данным сообщением
0
|
||
|
|
||
| 19.04.2017, 17:43 | ||
|
возможно валится на том факте, что сразу 10к подключений сервак принять не может
0
|
||
|
2 / 2 / 0
Регистрация: 23.09.2008
Сообщений: 54
|
|
| 19.04.2017, 17:56 [ТС] | |
|
Согласен насчет подсчет с сервера. Но проблему оно не решает
![]() Ошибка откуда-то появляется и как вариант остается дополнительный цикл добавлять на повтор отправки сообщения если вышла ошибка.
0
|
|
|
|
|
| 20.04.2017, 02:46 | |
|
В общем чуть подправил код, запустил и... часть сообщений виснит на ReadByte. XD Заменил порт, вроде пошло дело, по крайне мере 1к отработало.
Nyan.TestTcp.Server.zip
1
|
|
|
2 / 2 / 0
Регистрация: 23.09.2008
Сообщений: 54
|
||
| 20.04.2017, 09:34 [ТС] | ||
|
0
|
||
|
2 / 2 / 0
Регистрация: 23.09.2008
Сообщений: 54
|
|||||||
| 20.04.2017, 11:20 [ТС] | |||||||
|
Как я использую одновременно 40 клиентов, да просто при помощи bat скрипта:
0
|
|||||||
|
|
||
| 20.04.2017, 11:34 | ||
|
0
|
||
| 20.04.2017, 11:34 | |
|
Помогаю со студенческими работами здесь
20
TCP клиент-сервер через интернет Клиент-сервер TCP через маршрутизатор Передача данных на удаленный сервер по TCP несколькими потоками Клиент-сервер для ведения баз данных База данных (сервер - клиент) Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
||||
|
Учёным и волонтёрам проекта «Einstein@home» удалось обнаружить четыре гамма-лучевых пульсара в джете Млечного Пути
Programma_Boinc 01.01.2026
Учёным и волонтёрам проекта «Einstein@home» удалось обнаружить четыре гамма-лучевых пульсара в джете Млечного Пути
Сочетание глобально распределённой вычислительной мощности и инновационных. . .
|
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост.
Programma_Boinc 28.12.2025
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост.
Налог на собак: https:/ / **********/ gallery/ V06K53e
Финансовый отчет в Excel: https:/ / **********/ gallery/ bKBkQFf
Пост отсюда. . .
|
Кто-нибудь знает, где можно бесплатно получить настольный компьютер или ноутбук? США.
Programma_Boinc 26.12.2025
Нашел на реддите интересную статью под названием Anyone know where to get a free Desktop or Laptop?
Ниже её машинный перевод.
После долгих разбирательств я наконец-то вернула себе. . .
|
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка.
Programma_Boinc 23.12.2025
Рецензия / Мнение/ Перевод
Нашел на реддите интересную статью под названием The Thinkpad X220 Tablet is the best budget school laptop period . Ниже её машинный перевод.
Thinkpad X220 Tablet —. . .
|
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/
нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
|