Maison > développement back-end > C++ > Comment utiliser le C++ pour la programmation réseau ?

Comment utiliser le C++ pour la programmation réseau ?

王林
Libérer: 2023-11-03 11:10:46
original
1145 Les gens l'ont consulté

Comment utiliser le C++ pour la programmation réseau ?

Avec le développement d'Internet, la programmation réseau est devenue de plus en plus une partie importante de l'informatique. En tant que langage de programmation puissant, C++ offre également une grande prise en charge de la programmation réseau. Cet article explique comment utiliser le C++ pour la programmation réseau.

Présentation de la programmation réseau

La programmation réseau est le processus d'écriture de programmes de communication utilisant des réseaux informatiques. La programmation réseau nécessite l'utilisation de protocoles réseau (tels que TCP/IP) pour la transmission des données. En programmation réseau, il existe deux rôles principaux : client et serveur. Le client fait référence au programme qui initie la demande, tandis que le serveur est le programme qui répond à la demande et fournit des données.

Programmation réseau C++

C++ fournit des bibliothèques et des outils pour prendre en charge la programmation réseau. Voici quelques bibliothèques de programmation réseau C++ couramment utilisées :

  1. Boost.Asio : Il s'agit d'une bibliothèque C++ multiplateforme pour la programmation asynchrone et synchrone qui prend en charge plusieurs protocoles réseau, notamment TCP/IP, UDP et SSL.
  2. Poco C++ : Il s'agit d'une bibliothèque de classes C++ multiplateforme pour développer des applications basées sur le réseau, prenant en charge des protocoles tels que HTTP, SMTP et POP3.
  3. ACE : Il s'agit d'une boîte à outils de programmation réseau au niveau objet basée sur le langage C++, prenant en charge les E/S asynchrones, le multiplexage et les applications distribuées, etc.

Dans cet article, nous présenterons principalement comment utiliser la bibliothèque socket dans la bibliothèque standard C++ pour la programmation réseau.

Utilisez la bibliothèque de sockets C++ pour la programmation réseau

En C++, la bibliothèque de sockets est l'une des bibliothèques importantes utilisées pour la programmation réseau. La bibliothèque de sockets offre un moyen simple et portable de communiquer entre ordinateurs distants, permettant aux programmeurs de créer rapidement des applications réseau.

Avant d'utiliser la bibliothèque de sockets, vous devez inclure les fichiers d'en-tête suivants :

#include <sys/types.h>
#include <sys/socket.h>
#include <netinet/in.h>
#include <arpa/inet.h>
#include <unistd.h>
#include <string.h>
#include <iostream>
#include <stdlib.h>
Copier après la connexion

Créer un socket

Pour créer un socket C++, vous pouvez utiliser la fonction socket(), le code est le suivant :

int sockfd = socket(AF_INET, SOCK_STREAM, 0);
Copier après la connexion

Ici, AF_INET indique l'utilisation du protocole IPv4, SOCK_STREAM signifie Utiliser le protocole TCP pour la transmission, 0 signifie utiliser le protocole par défaut.

Connectez-vous au serveur

Si vous souhaitez vous connecter au serveur, vous pouvez utiliser la commande connect pour y parvenir. Lorsqu'il est utilisé sur le client, après avoir utilisé la fonction socket() pour créer le socket, vous pouvez utiliser la fonction de connexion connect() pour lier le socket au serveur. Le code est le suivant :

struct sockaddr_in serv_addr;
memset(&serv_addr, '0', sizeof(serv_addr));
serv_addr.sin_family = AF_INET;
serv_addr.sin_port = htons(port);
if (inet_pton(AF_INET, ip, &serv_addr.sin_addr) <= 0)
{
    std::cerr << "Error: Address not supported" << std::endl;
    return -1;
}

if (connect(sockfd, (struct sockaddr *)&serv_addr, sizeof(serv_addr)) < 0)
{
    std::cerr << "Error: Connection Failed" << std::endl;
    return -1;
}
Copier après la connexion

Ici, il faut préciser l'adresse IP et le numéro de port du serveur. La fonction inet_pton() convertit une adresse IP décimale pointée standard en ordre des octets du réseau. Si la connexion échoue, -1 sera renvoyé.

Envoi et réception de données

Pour envoyer et recevoir des données, vous pouvez utiliser les fonctions send() et recv(). Voici le code pour envoyer des données :

int bytes_sent = send(sockfd, buffer, strlen(buffer), 0);
Copier après la connexion

Ici, sockfd est le socket, buffer est les données à envoyer, strlen(buffer) est la longueur des données et 0 signifie qu'aucun indicateur n'est défini.

Voici le code pour recevoir des données :

char incoming_buffer[1024];
memset(incoming_buffer, '0', sizeof(incoming_buffer));
bytes_received = recv(sockfd, incoming_buffer, 1024, 0);
std::cout << "Received: " << incoming_buffer << std::endl;
Copier après la connexion

Ici, le incoming_buffer est un tableau de caractères de taille 1024, la fonction recv() lira les données du socket connecté et les stockera dans le incoming_buffer.

Fermez la connexion

Après avoir terminé l'envoi et la réception des données, vous devez fermer la connexion via la fonction close(). Le code est le suivant :

close(sockfd);
Copier après la connexion

Cela fermera le socket de connexion et libérera les ressources associées.

Résumé

Dans cet article, nous avons présenté comment utiliser la bibliothèque de sockets C++ pour la programmation réseau. La programmation réseau de base implique la création de sockets, la connexion aux serveurs, l'envoi et la réception de données et la fermeture des connexions. Dans le développement réel d'applications réseau, vous devrez peut-être gérer davantage de situations, telles que la gestion de plusieurs connexions, l'utilisation de sockets non bloquants, etc. Cependant, nous pensons que ce qui est mentionné ici constitue déjà un bon point de départ pour les débutants.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal