Linux C++网络编程基础主要包括以下几个方面:
#include <sys/socket.h>
#include <netinet/in.h>
#include <arpa/inet.h>
#include <unistd.h>
int sockfd = socket(AF_INET, SOCK_STREAM, 0);
if (sockfd < 0) {
perror("socket creation failed");
exit(EXIT_FAILURE);
}
struct sockaddr_in serv_addr;
memset(&serv_addr, 0, sizeof(serv_addr));
serv_addr.sin_family = AF_INET;
serv_addr.sin_addr.s_addr = INADDR_ANY;
serv_addr.sin_port = htons(8080);
if (bind(sockfd, (struct sockaddr *)&serv_addr, sizeof(serv_addr)) < 0) {
perror("bind failed");
close(sockfd);
exit(EXIT_FAILURE);
}
if (listen(sockfd, 3) < 0) {
perror("listen failed");
close(sockfd);
exit(EXIT_FAILURE);
}
struct sockaddr_in cli_addr;
socklen_t clilen = sizeof(cli_addr);
int newsockfd = accept(sockfd, (struct sockaddr *)&cli_addr, &clilen);
if (newsockfd < 0) {
perror("accept failed");
close(sockfd);
exit(EXIT_FAILURE);
}
char buffer[1024];
ssize_t bytes_received = recv(newsockfd, buffer, sizeof(buffer), 0);
if (bytes_received < 0) {
perror("recv failed");
} else if (bytes_received == 0) {
printf("Client disconnected\n");
} else {
printf("Received message: %s\n", buffer);
}
ssize_t bytes_sent = send(newsockfd, "Hello, Client!", 14, 0);
if (bytes_sent < 0) {
perror("send failed");
}
close(newsockfd);
close(sockfd);
perror
函数打印错误信息。通过掌握这些基础知识,你可以开始在Linux环境下使用C++进行网络编程,并逐步深入到更高级的主题。