Выносим предыдущий шаг в отдельную функцию:
..... 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().