Maison >développement back-end >C++ >Comment les fonctions C++ établissent-elles et gèrent-elles les sockets client dans la programmation réseau ?
Pour établir et gérer les sockets clients en C++, vous devez suivre les étapes suivantes : Utilisez la fonction socket() pour créer un socket. Utilisez la fonction connect() pour connecter le socket au serveur. Utilisez les fonctions send() et recv() pour échanger des données avec le serveur.
Fonctions C++ pour établir et gérer les sockets client dans la programmation réseau
L'établissement et la gestion des sockets client est une tâche de base dans la programmation réseau, et C++ fournit plusieurs fonctions pour atteindre cet objectif.
Établir un socket client
Utilisez la fonction socket()
pour créer un socket : socket()
函数创建套接字:
#include <sys/socket.h> int socket(int domain, int type, int protocol);
AF_INET
(IPv4)或 AF_INET6
(IPv6)。SOCK_STREAM
(TCP)或 SOCK_DGRAM
(UDP)。0
,允许操作系统选择默认协议。示例:
int sockfd = socket(AF_INET, SOCK_STREAM, 0);
连接到服务器
使用 connect()
函数将客户端套接字连接到服务器:
#include <sys/socket.h> int connect(int sockfd, const struct sockaddr *addr, socklen_t addrlen);
sockaddr_in
)。示例:
struct sockaddr_in servaddr; servaddr.sin_family = AF_INET; servaddr.sin_port = htons(80); inet_pton(AF_INET, "192.168.1.100", &servaddr.sin_addr); int rc = connect(sockfd, (struct sockaddr *)&servaddr, sizeof(servaddr));
发送和接收数据
使用 send()
和 recv()
函数与服务器交换数据:
#include <sys/socket.h> ssize_t send(int sockfd, const void *buf, size_t len, int flags); ssize_t recv(int sockfd, void *buf, size_t len, int flags);
0
char buf[1024]; int n = recv(sockfd, buf, sizeof(buf), 0);
AF_INET
(IPv4) ou AF_INET6
(IPv6).
SOCK_STREAM
(TCP) ou SOCK_DGRAM
(UDP). protocole : Généralement 0
, permettant au système d'exploitation de choisir le protocole par défaut.
#include <iostream> #include <sys/socket.h> #include <netinet/in.h> int main() { // 创建套接字 int sockfd = socket(AF_INET, SOCK_STREAM, 0); if (sockfd < 0) { std::cout << "Error creating socket" << std::endl; return -1; } // 连接到服务器 struct sockaddr_in servaddr; servaddr.sin_family = AF_INET; servaddr.sin_port = htons(80); inet_pton(AF_INET, "192.168.1.100", &servaddr.sin_addr); int rc = connect(sockfd, (struct sockaddr *)&servaddr, sizeof(servaddr)); if (rc < 0) { std::cout << "Error connecting to server" << std::endl; return -1; } // 发送数据 const char *msg = "Hello, server!"; int n = send(sockfd, msg, strlen(msg), 0); if (n < 0) { std::cout << "Error sending data" << std::endl; return -1; } // 接收数据 char buf[1024]; n = recv(sockfd, buf, sizeof(buf), 0); if (n < 0) { std::cout << "Error receiving data" << std::endl; return -1; } std::cout << "Received data: " << buf << std::endl; // 关闭套接字 close(sockfd); return 0; }🎜🎜Connectez-vous au serveur🎜🎜🎜Utilisez la fonction
connect()
pour connecter le socket client au serveur : 🎜rrreeesockaddr_in
). 🎜send()
et recv()
pour échanger des données avec le serveur : 🎜 rrreee0
. 🎜🎜🎜🎜Exemple :🎜🎜rrreee🎜🎜Cas pratique : établissement et gestion des sockets client🎜🎜🎜Il s'agit d'un programme C++ complet qui montre comment utiliser les fonctions ci-dessus pour établir et gérer les sockets client :🎜 rrreeeCe 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!