Проблема с приемом на сервере
От: Ruslan_Bezrodny  
Дата: 26.02.04 12:14
Оценка:
Есть сервер который принимает от клиента имя и пароль.
Сначала принимается идентификатор сообщения id, потом происходит обработка.
Если перед приемом имя и пароля поставить Sleep(1000), то сервер
нормально принимает данные.
Используются ассинхронные сокеты. WSASelect
Posted via RSDN NNTP Server 1.8 beta
Re: Проблема с приемом на сервере
От: butcher Россия http://bu7cher.blogspot.com
Дата: 26.02.04 12:23
Оценка:
Здравствуйте, Ruslan_Bezrodny.

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

R> Есть сервер который принимает от клиента имя и пароль.

R> Сначала принимается идентификатор сообщения id, потом происходит обработка.
R> Если перед приемом имя и пароля поставить Sleep(1000), то сервер
R> нормально принимает данные.
R> Используются ассинхронные сокеты. WSASelect

а если не ставить Sleep, то recv возвращает ошибку, наверно 10035?
да?
--
С уважением, butcher
Posted via RSDN NNTP Server 1.8 beta

Нет ничего невозможного..
Re: Проблема с приемом на сервере
От: Ruslan_Bezrodny  
Дата: 26.02.04 12:26
Оценка:
Ruslan_Bezrodny wrote:

> Есть сервер который принимает от клиента имя и пароль.

> Сначала принимается идентификатор сообщения id, потом происходит обработка.
> Если перед приемом имя и пароля поставить Sleep(1000), то сервер
> нормально принимает данные.
> Используются ассинхронные сокеты. WSASelect

Код ошибки при приеме сокет WSAEWOULDBLOCK. как обойти это.
Posted via RSDN NNTP Server 1.8 beta
Re[2]: Проблема с приемом на сервере
От: butcher Россия http://bu7cher.blogspot.com
Дата: 26.02.04 12:59
Оценка:
Здравствуйте, Ruslan_Bezrodny.

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

R> Код ошибки при приеме сокет WSAEWOULDBLOCK. как обойти это.


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

--
С уважением, butcher
Posted via RSDN NNTP Server 1.8 beta

Нет ничего невозможного..
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
Re[4]: Проблема с приемом на сервере
От: Аноним  
Дата: 01.03.04 11:01
Оценка:
Здравствуйте, Ruslan_Bezrodny, Вы писали:

R_B>Как организовать прием и пересылку, чтобы избавиться от WSAEWOULDBLOCK

R_B>при приеме данных?

Используй синхронные сокеты.
Re[5]: Проблема с приемом на сервере
От: butcher Россия http://bu7cher.blogspot.com
Дата: 01.03.04 11:04
Оценка:
Здравствуйте, All.

Вы писали 1 марта 2004 г., 14:01:01:

R_B>>Как организовать прием и пересылку, чтобы избавиться от WSAEWOULDBLOCK

R_B>>при приеме данных?

> Используй синхронные сокеты.


ИМХО, Overlapped IO удобнее..

--
С уважением, butcher
Posted via RSDN NNTP Server 1.8 beta

Нет ничего невозможного..
Re[6]: Проблема с приемом на сервере
От: BuHHu-nyX Россия  
Дата: 01.03.04 13:05
Оценка:
B> ИМХО, Overlapped IO удобнее..

Мне приходится работать с версией 1.1, где все это великолепие недоступно(
Re[7]: Проблема с приемом на сервере
От: butcher Россия http://bu7cher.blogspot.com
Дата: 01.03.04 13:14
Оценка:
Здравствуйте, BuHHu-nyX.

Вы писали 1 марта 2004 г., 16:05:08:
B>> ИМХО, Overlapped IO удобнее..
Bn> Мне приходится работать с версией 1.1, где все это великолепие недоступно(

мда.. плохо тебе
тогда корректно обрабатывай WSAEWOULDBLOCK, как советует MSDN..

--
С уважением, butcher
Posted via RSDN NNTP Server 1.8 beta

Нет ничего невозможного..
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.