ВУЗ:
Составители:
Рубрика:
- 57 -
WSAENOTSOCK
Указан дескриптор файла, не сокета
WSAETIMEDOUT
При попытке установления канала связи возникла задержка
во времени
При использовании параметра FD_CLOSE может возникнуть одна из
следующих ошибок
Код ошибки Описание
WSAENETDOWN
Сбой в сети
WSAECONNRESET
Разрыв соединения удаленным узлом
WSAECONNABORTED
Сбой из-за слишком большой задержки или по другой при-
чине
В случае использования параметров FD_READ, FD_WRITE, FD_OOB
или FD_ACCEPT может возникнуть ошибка с кодом WSAENETDOWN.
Обработчик сообщения WSA_NETEVENT должен выполнить анализ
причины, по которой он был вызван, так как за один вызов функции
WSAAsyncSelect можно задать несколько событий, вызывающих генерацию
этого сообщения. Такой анализ проводится, например, следующим образом
(параметр wParam
содержит дескриптор сокета, на котором выполняется пе-
редача данных, а lParam - код происшедшего в сети события)
void
WndProc_OnWSANetEvent(HWND hWnd,
UINT msg,
WPARAM wParam,
LPARAM lParam)
{
char szTemp[256];
int rc;
// если на сокете выполняется передача данных, то
// принять и отобразить эти данные в виде строки текста
if (WSAGETSELECTEVENT(lParam) == FD_READ)
{
rc = recv((SOCKET) wParam, szTemp, 256, 0);
if (rc)
{
szTemp[rc] = '\0';
MessageBox(NULL, szTemp, "Принятые данные", MB_OK);
}
return;
}
// если соединение завершено, вывести сообщение об этом
else
if (WSAGETSELECTEVENT(lParam) == FD_CLOSE)
- 57 - WSAENOTSOCK Указан дескриптор файла, не сокета WSAETIMEDOUT При попытке установления канала связи возникла задержка во времени При использовании параметра FD_CLOSE может возникнуть одна из следующих ошибок Код ошибки Описание WSAENETDOWN Сбой в сети WSAECONNRESET Разрыв соединения удаленным узлом WSAECONNABORTED Сбой из-за слишком большой задержки или по другой при- чине В случае использования параметров FD_READ, FD_WRITE, FD_OOB или FD_ACCEPT может возникнуть ошибка с кодом WSAENETDOWN. Обработчик сообщения WSA_NETEVENT должен выполнить анализ причины, по которой он был вызван, так как за один вызов функции WSAAsyncSelect можно задать несколько событий, вызывающих генерацию этого сообщения. Такой анализ проводится, например, следующим образом (параметр wParam содержит дескриптор сокета, на котором выполняется пе- редача данных, а lParam - код происшедшего в сети события) void WndProc_OnWSANetEvent(HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam) { char szTemp[256]; int rc; // если на сокете выполняется передача данных, то // принять и отобразить эти данные в виде строки текста if (WSAGETSELECTEVENT(lParam) == FD_READ) { rc = recv((SOCKET) wParam, szTemp, 256, 0); if (rc) { szTemp[rc] = '\0'; MessageBox(NULL, szTemp, "Принятые данные", MB_OK); } return; } // если соединение завершено, вывести сообщение об этом else if (WSAGETSELECTEVENT(lParam) == FD_CLOSE)
Страницы
- « первая
- ‹ предыдущая
- …
- 55
- 56
- 57
- 58
- 59
- …
- следующая ›
- последняя »