Re[3]: Проблема с приемом на сервере
От: Ruslan_Bezrodny  
Дата: 26.02.04 14:01
Оценка:
butcher wrote:


> Вы писали 26 февраля 2004 г., 15:26:08:

>
> R> Код ошибки при приеме сокет WSAEWOULDBLOCK. как обойти это.
>
> 1. используя перекрытый ввод-вывод.
> 2. как рекомендуют в MSDN прочитать данные, сбросить событие и в
> следующий раз прочитать все остальные..

Что значит сбросить событие?

Механизм работы клиента и сервера таков:
После соединения клиент шлет:
const char msg_login = 0x01;
std::sting login;
std::sting password;
//заполнение login и password dialog
char id = msg_login;
soc->send(id);
soc->send(login);
soc->send(password);

Server на WSA_NETEVENT обрабатывает сообщения
case FD_READ:
{
Socket* read = (Socket*)FindSocket( (SOCKET)wp );
if( read ){
MsgID msg_id;
read->Recv( msg_id );
//------------- messages processing ---------
switch( msg_id ){
case MSGID_CONNECT:
MSGConnect( read );
break;
//...
}
}
//Эта функция принимает имя и пароль от клиента
void MSGConnect( Socket* soc )
{
string login;
string psw;
soc->Recv( login );
soc->Recv( psw );
}

Как организовать прием и пересылку, чтобы избавиться от WSAEWOULDBLOCK
при приеме данных?
Posted via RSDN NNTP Server 1.8 beta
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.