|
1274 / 975 / 113
Регистрация: 12.01.2010
Сообщений: 1,971
|
|||||||||||
Асинхронный сервер - чат, много сообщений02.06.2010, 19:32. Показов 7605. Ответов 9
Метки нет (Все метки)
вобщем сделал некое подобие чата, все вроде бы хорошо - отсылает/принимает сообщения нормально от множества клиентов
придумал некую эмуляцию большой нагрузки
если включить Sleep и пробовать на 2 разных компах в сети глюк остается, но через 127.0.0.1 глюка нет а если без задержки то даже через 127.0.0.1 сливаются серверная часть часть выглядит так
вот я думаю возможно ли это вообще вылечить? может такой поток сообщений и не должно выдерживать? да и кстати говоря - нормально ли делать такой прием имени юзера и пароля? выглядит как-то не очень надежно...как лучше?
0
|
|||||||||||
| 02.06.2010, 19:32 | |
|
Ответы с готовыми решениями:
9
Принятие сообщений от сервера в бесконечном цикле (Клиент-Сервер Чат) Простенький асинхронный чат. Что-то не то с кодировкой Асинхронный сервер |
|
4340 / 1509 / 101
Регистрация: 12.04.2009
Сообщений: 2,342
|
|
| 02.06.2010, 19:35 | |
|
Вроде все правильно, шлешь данные с малым интервалом - он отправляет их в одном пакете.
Либо ставь Sleep, либо добавляй в конце каждого сообщения разделитель, чтобы уметь отделять их друг от друга
0
|
|
|
1274 / 975 / 113
Регистрация: 12.01.2010
Сообщений: 1,971
|
|
| 02.06.2010, 19:45 [ТС] | |
|
как я и думал...
а как вообще работает метод Send у сокета - отправляет данные в сеть, ждет пока их примут и только тогда завершается или просто отправляет и завершается? и в чем смысл BeginSend, т.е он ждет чего перед отравкой - освобождения сети, времени проца или как?
0
|
|
|
1 / 1 / 0
Регистрация: 03.06.2010
Сообщений: 7
|
|
| 03.06.2010, 07:55 | |
|
Привет. Тоже пишу подобный сервер. Попробуй для каждого подключения делать свой поток.
Вот только у меня схожая проблема, но немного с другой ситуацией, вобщем тоже нуждаюсь в помощи, проблема в том, что совмещения потоков нет(данные не склеиваются у разных пользователей) НО они склеиваются если один игрок отправляет несколько сообщений одновременно... В C# где-то недельку, но с программированием знаком хорошо ибо без труда написал TCP сервер.. Вот только прочтя эту тему(проделав проверку) заметил, что подобная проблема с совмещением сообщений... Будто буфер получая сообщение в единицу времени склеивает их =(
0
|
|
|
7 / 7 / 0
Регистрация: 06.02.2010
Сообщений: 31
|
|
| 03.06.2010, 09:11 | |
|
я у сервера делал по по-потоку на каждого клиента (по-сути не совсем корректный подход, ибо при 1000 коннектов сервер будет тормозить). Все сообщения приходящие от пользователей кидались в очередь. Основной поток сервера извлекал сообщения из очереди и транслировал всем клиентам.
0
|
|
|
1 / 1 / 0
Регистрация: 03.06.2010
Сообщений: 7
|
||||||
| 03.06.2010, 11:49 | ||||||
|
А какой способ корректнее? Я лично тоже так делаю, новый пользователь - новый поток.
Действительно, мне помог вариант с разделением строки по символу! К примеру вот как я реализовал:
Спасибо HIMen за идею с разделением =)
0
|
||||||
|
7 / 7 / 0
Регистрация: 06.02.2010
Сообщений: 31
|
||
| 03.06.2010, 12:16 | ||
|
0
|
||
|
1274 / 975 / 113
Регистрация: 12.01.2010
Сообщений: 1,971
|
|
| 03.06.2010, 16:51 [ТС] | |
|
выгодней использовать как раз асинхронные операции, как собственно у меня и сделано
судя по статье http://www.microsoft.com/Rus/M... nsock.mspx такой подход по всем параметрам лучше вообще по теме я уже вычитал на мсдн описание методов сокетов, там как раз сказано что они не гарантируют моментальную отправку данных, а могут ждать заполнения буфера
0
|
|
|
1 / 1 / 0
Регистрация: 03.06.2010
Сообщений: 7
|
|
| 03.06.2010, 18:09 | |
|
Тоесть? А каким методом он определяет когда отправлять, а когда нет? x))) Хм, а если нужна моментальная?
0
|
|
|
1274 / 975 / 113
Регистрация: 12.01.2010
Сообщений: 1,971
|
|
| 03.06.2010, 18:20 [ТС] | |
|
точней отправку-то они гарантируют почти всегда, а вот именно доставки до места назначения может и не быть сразу
там есть какой-то "неблокирующий режим" еще...думаю можно настроить чтоб сразу отправлялось вообще там все написано http://msdn.microsoft.com/ru-r... yy28a.aspx
0
|
|
| 03.06.2010, 18:20 | |
|
Помогаю со студенческими работами здесь
10
Асинхронный клиент-сервер Асинхронный сервер не отвечает Асинхронный сервер на UDP-сокетах Асинхронный сокет сервер + SSL
Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
SDL3 для Web (WebAssembly): Основы отладки веб-приложений на SDL3 по USB и Wi-Fi, запущенных в браузере мобильных устройств
8Observer8 07.02.2026
Содержание блога
Браузер Chrome имеет средства для отладки мобильных веб-приложений по USB. В этой пошаговой инструкции ограничимся работой с консолью. Вывод в консоль - это часть процесса. . .
|
SDL3 для Web (WebAssembly): Обработчик клика мыши в браузере ПК и касания экрана в браузере на мобильном устройстве
8Observer8 02.02.2026
Содержание блога
Для начала пошагово создадим рабочий пример для подготовки к экспериментам в браузере ПК и в браузере мобильного устройства. Потом напишем обработчик клика мыши и обработчик. . .
|
Философия технологии
iceja 01.02.2026
На мой взгляд у человека в технических проектах остается роль генерального директора. Все остальное нейронки делают уже лучше человека. Они не могут нести предпринимательские риски, не могут. . .
|
SDL3 для Web (WebAssembly): Вывод текста со шрифтом TTF с помощью SDL3_ttf
8Observer8 01.02.2026
Содержание блога
В этой пошаговой инструкции создадим с нуля веб-приложение, которое выводит текст в окне браузера. Запустим на Android на локальном сервере. Загрузим Release на бесплатный. . .
|
|
SDL3 для Web (WebAssembly): Сборка C/C++ проекта из консоли
8Observer8 30.01.2026
Содержание блога
Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
|
SDL3 для Web (WebAssembly): Установка Emscripten SDK (emsdk) и CMake для сборки C и C++ приложений в Wasm
8Observer8 30.01.2026
Содержание блога
Для того чтобы скачать Emscripten SDK (emsdk) необходимо сначало скачать и уставить Git: Install for Windows. Следуйте стандартной процедуре установки Git через установщик. . . .
|
SDL3 для Android: Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 29.01.2026
Содержание блога
Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами. Версия v3 была полностью переписана на Си, в. . .
|
Инструменты COM: Сохранение данный из VARIANT в файл и загрузка из файла в VARIANT
bedvit 28.01.2026
Сохранение базовых типов COM и массивов (одномерных или двухмерных) любой вложенности (деревья) в файл, с возможностью выбора алгоритмов сжатия и шифрования.
Часть библиотеки BedvitCOM
Использованы. . .
|