новий сокет і повертає його дескриптор. Параметр sockfd задає слухає сокет. Після виклику він залишається в слухаючому стані і може приймати інші сполуки. У структуру, на яку посилається addr, записується адреса сокета клієнта, який встановив з'єднання з сервером. У змінну, адресуемую покажчиком addrlen, спочатку записується розмір структури; функція accept записує туди довжину, яка реально була використана. p align="justify"> На стороні клієнта для встановлення з'єднання використовується функція connect, яка має наступний прототип.
int connect (int sockfd, struct sockaddr * serv_addr, int addrlen);
Тут sockfd - сокет, який буде використовуватися для обміну даними з сервером, serv_addr містить покажчик на структуру з адресою сервера, а addrlen - довжину цієї структури. p align="justify"> Після того як з'єднання встановлено, можна починати обмін даними. Для цього використовуються функції send і recv. p align="justify"> Функція send використовується для відправки даних і має наступний прототип
int send (int sockfd, const void * msg, int len, int flags);
Тут sockfd - це дескриптор сокета, через який відправляються дані, msg - покажчик на буфер з даними, len - довжина буфера в байтах, а flags - набір бітових прапорів, керуючих роботою функції (якщо прапори не використовуються , передається 0). p align="justify"> Для читання даних з сокета використовується функція
int recv (int sockfd, void * buf, int len, int flags);
Її використання аналогічно send. За аналогією з send функція recv повертає кількість прочитаних байтів, яке може бути менше розміру буфера. Існує особливий випадок, при якому recv повертає 0. Це означає, що з'єднання було розірвано. p align="justify"> Закінчивши обмін даними, необхідно закрити сокет за допомогою функції close. Це призведе до розриву з'єднання і звільненню пам'яті ядра операційної системи, зайнятої даними сокетом. br/>
int closesocket (int fd)
2.2 Запуск програми на виконання у вигляді служби операційної системи Windows
Серверні процеси в операційній системі Windows реалізуються у вигляді сервісів - програмних модулів особливої вЂ‹вЂ‹структури, завдяки якій стає можливим керувати цими програмними модулями ззовні за допомогою менеджера сервісів.
Така підсистема сервісів дозволяє легко встановлювати, запускати, припиняти і завершувати роботу сервісів, централізовано встановлювати залежності між різними службами, черговість їх запуску і так далі.
Кожен сервіс реалізується на базі будь-якого виконуваного файлу. Тому в рамках даної курсової роботи представляється оптимальним розробити виконуваний файл, що містить серверну частину гри мережевий "двадцять один", який при необхідності ...