C++ C++ C# C# ASP.NET Security ASP.NET Security ASM ASM Скачать Скачать Поиск Поиск Хостинг Хостинг  
  Программа для работы с LPT портом...
Язык: .NET — ©Alexey...
  "ASP.NET Atlas" – AJAX в исполнении Micro...
Язык: .NET — ©legigor@mail.ru...
  "Невытесняющая" Многопоточность...
Язык: C/C++ — ©...
  Update World C++: Сборник GPL QT исходников
  Весь сайт целиком можно загрузить по ссылкам из раздела Скачать

 

Шаг 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().


Загрузить проект | | |
Автор Каев Артем.
[AD]