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

Ваш аккаунт

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

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

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

Форма и ожидание сообщения из сокета.

10K
03 апреля 2007 года
nuhop
50 / / 24.03.2007
У меня есть форма, которая выводит сообщения из сокета. Форма находится на машине клиента. Реализовал так:

while((ret= theSocket.Receive( str_out, sizeof(str_out), 0 )) > 0)
{
for (i = 0; i < (int) strlen(str_out); i++)
{
if (str_out == '#')
{
str_out = 0;
SetDlgItemText(IDC_EDIT2, str_out);
break;
}
else
{
SetDlgItemText(IDC_EDIT2, str_out);
}
}
}

Проблема в том, что сервер присылает сообщение в неопределенное время. Все это время форма находится в состоянии ожидания и "висит".
Можно ли ожидание сообщений из сокета вывести в отдельный процесс? По-моему, аналогом fork() в Visual C++ может выступить Thread.
240
03 апреля 2007 года
aks
2.5K / / 14.07.2006
fork - это создание отдельного процесса. И его аналогом в винде является CreateProcess.
А thread он и в винде thread и не ввинде, создается с помощью CreateThread
240
03 апреля 2007 года
aks
2.5K / / 14.07.2006
И вобще не хорошо это мешать вместе GUI скажем и различную бизнес-логику, сетевую активность в данном примере. Вот какой смысл в классе овечающем за работу окна ждать данных из сети? threads тут конечно помогут, но проектирование неверное.
10K
03 апреля 2007 года
nuhop
50 / / 24.03.2007
Как правильно?
240
03 апреля 2007 года
aks
2.5K / / 14.07.2006
Правильно не мешать вместе GUI бизнеслогику и т.п. да и вобще не мешать в одном классе несвязанные вещи.
Не понятно разве - если есть класс для обработки окна (как вы называете форма), то там и должно быть только то что связанно с его графическим представлением.
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог