Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Многопоточный tcp\ip сервер

1.7K
26 февраля 2006 года
ilyes
181 / / 22.02.2006
Я уже писал на форуме по С++, но никто не помог, может здесь кто ответит: при создании многопоточного сервера как показано на сайте:
http://bdn.borland.com/article/0,1410,26276,00.html в потоке не получается отправить сообщение обратно клиенту ( pStream->Write( buffer, sizeof(buffer)); ) сервер вроде пишет что отправил, а у клинта даже OnRead не срабатывает, если кто-нибуть сталкивался с чем-нибудь похожим напишите пожалуйста, буду очень благодарен.
7.8K
26 февраля 2006 года
DrCoder
106 / / 27.01.2006
Если у тебя сервер отвечает на запрос клиента, то тебе не нужно дожидаться никакого события OnRead. Необходимо просто сразу же после отправки запроса читать из сокета (или клиентского компонента в твоем случае) данные. А OnRead скорее всего происходит либо перед фактическим чтением данных, либо после.
1.7K
27 февраля 2006 года
ilyes
181 / / 22.02.2006
Цитата:
Originally posted by DrCoder
Если у тебя сервер отвечает на запрос клиента ...

Так ведь с однопоточными (NonBlocking) OnRead работает и все хорошо принимает. А сервер должен одновременно держать много соединений и не до каждого клиента сообщение доходит сразу после отправки запроса, может несколько минут пройти, так что мне кажется нужно реагировать на событие.

7.8K
27 февраля 2006 года
DrCoder
106 / / 27.01.2006
Ну даже и не знаю, что тебе сказать.
Я хоть и не великий спец в сетевых приложениях, но сколько я не писал их, постоянно приходилось самому делать Recv.
Если ты не можешь получить ответ сразу, но при этом соединение не прерывается, тебе необходимо написать тред для клиента, который будет ожидать пакеты от сервера, либо с фиксированным таймаутом, либо с infinite да пока соединению дисконнект не пришел :)))
Или может быть у тебя компоненты TCP навороченные, что сами читают из соккета ?
1.7K
27 февраля 2006 года
ilyes
181 / / 22.02.2006
Цитата:
Originally posted by DrCoder
Ну даже и не знаю, что тебе сказать.
Я хоть и не великий спец в сетевых приложениях, но сколько я не писал их, постоянно приходилось самому делать Recv.
Если ты не можешь получить ответ сразу, но при этом соединение не прерывается, тебе необходимо написать тред для клиента, который будет ожидать пакеты от сервера, либо с фиксированным таймаутом, либо с infinite да пока соединению дисконнект не пришел :)))
Или может быть у тебя компоненты TCP навороченные, что сами читают из соккета ?



Да уж похоже что на клиенте придется все делать вручную, это лучше чем ничего не делать. Спасибо за подсказку! А компоненты вроде самые обычные ClientSocket и ServerSocket.

1.7K
28 февраля 2006 года
ilyes
181 / / 22.02.2006
Вот блин, новая проблема возникла: до 10 Мбайт файлы пролетают просто супер, а вод если файл больше то почему-то начинает замедлятся(причем серьезно замедлятся). А с однопоточным серверов все нормально, ничего не замедляется.
7.8K
28 февраля 2006 года
DrCoder
106 / / 27.01.2006
Цитата:
Originally posted by ilyes
...до 10 Мбайт файлы пролетают просто супер ...



Выложи кусок кода, серверную и клиентскую часть при передаче файла

1.7K
28 февраля 2006 года
ilyes
181 / / 22.02.2006
Извиняюсь, я проглючил, забыл MemoryStream->SetSize сделать...
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог