Шаг 7 - Ожидающий сокет

Выносим предыдущий шаг в отдельную функцию:

.....
void LinkWindowScoket();
.....

После всех настроек есть возможность установить сокет в состояние ожидания. Это делается командой listen. Вот весь код:

void WaitSocket()
{
	SocketGetHostName();
	CreateSocket();
	LinkSoketPort();
	LinkWindowScoket();
	int Errors;
	Errors=listen(servsocket,QUEUE_SIZE);
	if ( Errors == SOCKET_ERROR)
	{
		printf(" Listen BAD !!! \n");
		exit(1);
	}
	else printf("God Listen  !!!!!!! \n");
	printf("Wait to connected");

	CloseScoket();
}

Некоторая специфика приложения Win32 Console на данный момент не даст возможность послушать по человечески. Нам в следующих шагах придется научить получать сообщения от Windows и их обрабатывать. Но при программировании на базе, скажем, MFC этого было бы достаточно, чтобы сразу перейти к обработке сообщений. А пока мы увидим, что всё нормально и программа завершит работу.

Итак, функция listen() переводит сокет в режим ожидания:

int listen (  
	SOCKET s,
	int backlog  
);

Первый параметр это созданный сокет, а второй максимальное количество подключений. Я пока оставил 5 определив константу QUEUE_SIZE:

#define QUEUE_SIZE 5

При нормальном завершении функция вернет 0, иначе SOCKET_ERROR, кстати я ни разу вроде не сказал, но расширенный код ошибки можно получить вызвав функцию WSAGetLastError().


Загрузить проект | Предыдущий Шаг | Следующий Шаг | Оглавление
Автор Каев Артем - 15.01.2000