Системное программирование в среде Windows.

Пример: подготовка и получение клиентских запросов соединения.

Ниже приводится фрагмент кода, показывающий, как создать сокет и организовать прием клиентских запросов соединения.

В этом примере используются две стандартные функции: htons ("host to network short" — "ближняя связь") и htonl ("host to network long" — "дальняя связь"), которые преобразуют целые числа к форме с обратным порядком байтов, требуемой протоколом IP.

Номером порта сервера может быть любое число из диапазона, допустимого для целых чисел типа short integer, но для определенных пользователем служб обычно используются числа в диапазоне 1025—5000. Порты с меньшими номерами зарезервированы для таких известных служб, как telnet или ftp, в то время как порты с большими номерами предполагаются для использования других стандартных служб.

Struct sockaddr_in SrvSAddr; /* Адресная структура сервера. */

Struct sockaddr_in ConnectAddr;

SOCKET SrvSock, sockio;

…

SrvSock = socket(AF_INET, SOCK_STREAM, 0);

SrvSAddr.sin_family = AF_INET;

SrvSAddr.sin_addr.s_addr = htonl(INADDR_ANY);

SrvSAddr.sin_port = htons(SERVER_PORT);

Bind(SrvSock, (struct sockaddr *)&SrvSAddr, sizeof SrvSAddr);

Listen(SrvSock, 5);

AddrLen = sizeof(ConnectAddr); 

Sockio = accept(SrvSock, (struct sockaddr *) &ConnectAddr, &AddrLen);

… Получение запросов и отправка ответов …

Shutdown(sockio);

Closesocket(sockio);