|
2 / 2 / 0
Регистрация: 23.09.2008
Сообщений: 54
|
|||||||||||
TCP (Клиент-сервер) - потеря данных18.04.2017, 09:21. Показов 3965. Ответов 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 несколькими потоками Клиент-сервер для ведения баз данных База данных (сервер - клиент) Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Отображение реквизитов в документе по условию и контроль их заполнения
Maks 04.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеСпецтехники", разработанного в конфигурации КА2.
Данный документ берёт данные из другого нетипового документа. . .
|
Фото всей Земли с борта корабля Orion миссии Artemis II
kumehtar 04.04.2026
Это первое подобное фото сделанное человеком за 50 лет. Снимок называют новым вариантом легендарной фотографии «The Blue Marble» 1972 года, сделанной с борта корабля «Аполлон-17». Новое фото. . .
|
Вывод диалогового окна перед закрытием, если документ не проведён
Maks 04.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2.
Задача: реализовать программный контроль на предмет проведения документа. . .
|
Программный контроль заполнения реквизита табличной части документа
Maks 02.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2.
Задача: реализовать контроль заполнения реквизита "ПричинаСписания". . .
|
|
wmic не является внутренней или внешней командой
Maks 02.04.2026
Решение:
DISM / Online / Add-Capability / CapabilityName:WMIC~~~~
Отсюда: https:/ / winitpro. ru/ index. php/ 2025/ 02/ 14/ komanda-wmic-ne-naydena/
|
Программная установка даты и запрет ее изменения
Maks 02.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2.
Задача: при создании документов установить период списания автоматически. . .
|
Вывод данных в справочнике через динамический список
Maks 01.04.2026
Реализация из решения ниже выполнена на примере нетипового справочника "Спецтехника" разработанного в конфигурации КА2.
Задача: вывести данные из ТЧ нетипового документа. . .
|
Программное заполнения текстового поля в реквизите формы документа
Maks 01.04.2026
Алгоритм из решения ниже реализован на нетиповом документе "ВыдачаОборудованияНаСпецтехнику" разработанного в конфигурации КА2, в дополнении к предыдущему решению.
На форме документа создается. . .
|