Системный вызов функции подключения в C

Ускоренный курс по операционным системам Программирование и разработка

Мы не можем выделить достаточно программирование сокетов и все варианты его использования. Однако, поскольку это широко распространенная тема, каждый из ее компонентов или функций, используемых при программировании сокетов, имеет решающее значение и должен изучаться отдельно. Функция соединения или системный вызов также является важной функцией, используемой при программировании сокетов на языке программирования C. В этой статье мы увидим, как мы можем использовать эту функцию на языке программирования C.

Цель использования системного вызова функции Connect в языке программирования C

Как следует из названия этой функции, системный вызов функции connect в языке программирования C буквально используется для соединения чего-то с другим. Однако здесь нужно понимать, что это за вещи. При программировании сокетов мы обычно стремимся обеспечить канал взаимодействия между клиентом и сервером. Сервер должен оставаться в режиме прослушивания, чтобы клиент мог легко подключиться к нему в любое время. Здесь мы используем системный вызов функции connect языка программирования C.

Эта функция используется на стороне клиента кода и пытается подключиться к серверу по указанному сокету и адресу. Если это соединение не удается, генерируется ошибка, после чего программирование прекращается. Однако, если соединение установлено успешно, клиент и сервер могут легко обмениваться сообщениями. Системный вызов функции подключения реализован в заголовочном файле «sys/socket.h», и его общий синтаксис выглядит следующим образом:

int connect(int sockfd, const struct sockaddr *addr, socklen_t addrlen);

Тип возвращаемого значения функции подключения — «int». Он возвращает «0» в случае успеха и «-1» в случае неудачи. Затем эта функция принимает три разных параметра, которые она использует для подключения клиента к серверу. Параметр «sockfd» привязан к адресу, указанному в параметре «addr», к которому клиент хочет подключиться. Опять же, параметр «addr» используется для определения адреса, к которому клиент хочет подключиться, тогда как переменная «addrlen» указывает длину этого адреса.

Читайте также:  Что такое карта сайта и как создать ее для своего веб-сайта

Пример использования системного вызова функции Connect на языке программирования C

Чтобы понять использование системного вызова функции подключения на языке программирования C, вам необходимо понять взаимодействие между клиентом и сервером. Для этого вам нужно будет объяснить как серверный, так и клиентский код нашего примера.

Объяснение кода на стороне сервера

На следующем изображении показан серверный код нашего текущего примера:

 следующем изображении показан клиентский код нашего

Мы не будем углубляться в этот код, так как нас в основном

Мы не будем углубляться в этот код, так как нас в основном интересует системный вызов функции соединения языка программирования C, который является частью нашего клиентского кода. Здесь мы попытаемся кратко суммировать код на стороне сервера. После включения всех соответствующих библиотек или заголовочных файлов мы определили все необходимые переменные в нашей функции «main()». Затем мы также определили сообщение, которое мы хотим передать нашему клиенту как часть этого взаимодействия.

После этого мы создали сокет и привязали его к нужному адресу с помощью функции «bind()». Затем мы перевели этот сервер в режим прослушивания с помощью функции «listen()», за которой следует функция «accept()», чтобы этот сервер мог принимать запросы, сделанные клиентами. Как только сервер примет запрос на соединение, на серверном терминале будет напечатано сообщение об успешном завершении, после чего сервер будет обмениваться сообщениями с клиентом. Для обеспечения этого взаимодействия мы использовали функции «send()» и «read()» языка программирования C.

Объяснение клиентского кода

На следующем изображении показан клиентский код нашего текущего примера:

 

После включения необходимых библиотек и файлов заголовков на стороне

После включения необходимых библиотек и файлов заголовков на стороне клиента мы объявили необходимые переменные и сообщение, которое мы хотим отправить на сервер как часть этого взаимодействия. Затем мы использовали некоторые функции для поиска всех возможных ошибок. После этого у нас есть функция «connect», в которой мы пытаемся подключиться к серверу. Эта функция содержит в качестве параметров соответствующий сокет и адрес сервера, к которому хочет подключиться клиент. Если соединение установлено успешно, на клиентской стороне терминала будет напечатано сообщение. Наконец, клиент и сервер будут обмениваться сообщениями друг с другом. Для обеспечения этого взаимодействия мы использовали функции «send()» и «read()» языка программирования C.

Составление и выполнение программы

Для компиляции как серверной, так и клиентской программы нам нужно открыть два разных терминала и выполнить следующие команды (по одной команде на каждом из двух терминалов):

gcc connectServer.c –o connectServer
gcc connectClient.c –o connectClient

Для выполнения обеих сторон кода нам нужно будет запустить команды, показанные ниже, на каждом из соответствующих терминалов:

./connectServer
./connectClient

Единственное, с чем вам нужно быть осторожным при выполнении этих кодов, это то, что вы должны сначала запустить код на стороне сервера, чтобы сервер находился в режиме прослушивания, и как только вы запустите код на стороне клиента, клиент может мгновенно подключиться к серверу.

В следующих выходных данных вы можете визуализировать, что сообщения об успешном соединении отображались на обоих терминалах, т. е. на клиентском терминале и на серверном терминале. После этого клиент и сервер обмениваются сообщениями, распечатанными на соответствующих терминалах.

После этого клиент и сервер обмениваются сообщениями, распечатанными

Что может пойти не так, если вы пропустите системный вызов Connect Function в клиентском коде?

Что ж, в таком случае сервер навсегда останется в режиме прослушивания (если в серверном коде не указан тайм-аут сеанса), и клиент никогда не сможет подключиться к этому серверу.

Вывод

Это руководство предназначено для того, чтобы рассказать вам о системном вызове функции connect на языке программирования C. Для этого мы сначала обсудили, почему эта функция вообще существует в языке программирования C, а затем подробно описали ее синтаксис, включая параметры, которые она принимает, и тип возвращаемого значения. Затем мы поделились всеобъемлющим примером, чтобы продемонстрировать использование системного вызова функции подключения на языке программирования C. Изучив этот пример, вы определенно поймете, насколько просто использовать системный вызов функции connect при программировании сокетов на языке программирования C.

Оцените статью
bestprogrammer.ru
Добавить комментарий