C++ 编程技术

网络编程

一、网络编程基础概念与原理

1.1 套接字(Socket)

1.2 IP地址和端口

1.3 TCP/IP协议

二、C++网络编程核心技术

2.1 套接字编程

2.1.1 创建套接字

#include   //windows

     // 初始化Winsock库  windows 需要
    WSADATA wsadata;
    if(WSAStartup(MAKEWORD(2, 2), &wsadata))
    {
        puts("WSAStartup failed.");
        return 1;
    }

int sockfd = socket(AF_INET, SOCK_STREAM, 0);
if (sockfd < 0) {
    perror("socket creation failed");
    exit(EXIT_FAILURE);
}  

解析:
  • socket(AF_INET, SOCK_STREAM, 0):创建一个TCP套接字。AF_INET表示使用IPv4,SOCK_STREAM表示使用TCP协议。
  • 返回值:成功时返回套接字文件描述符,失败时返回-1。 
报错解决 :
  • socket creation failed: No error: 初始化Winsock库
2.1.2 绑定地址

struct sockaddr_in server_addr;
memset(&server_addr, 0, sizeof(server_addr));
server_addr.sin_family = AF_INET;
server_addr.sin_addr.s_addr = INADDR_ANY;
server_addr.sin_port = htons(PORT);
 
if (bind(sockfd, (struct sockaddr*)&server_addr, sizeof(server_addr)) < 0) {
    perror("bind failed");
    closesocket(sockfd);
    exit(EXIT_FAILURE);

解析
  • struct sockaddr_in:定义IP地址和端口,sin_family设为AF_INETsin_addr.s_addr设为INADDR_ANY表示接受任何IP地址,sin_port设为端口(通过htons函数转换为网络字节序)。
  • bind:将地址绑定到套接字。

2.1.3 监听和接受连接

#include // windows

if (listen(sockfd, 5) < 0)
    {
        perror("listen failed");
        closesocket(sockfd);
        exit(EXIT_FAILURE);
    }
 
struct sockaddr_in client_addr;
socklen_t client_len = sizeof(client_addr);
int newsockfd = accept(sockfd, (struct sockaddr*)&client_addr, &client_len);
if (newsockfd < 0) {
    perror("accept failed");
    closesocket(sockfd);
    exit(EXIT_FAILURE);

解析
  • listen:将套接字置于监听模式,准备接受连接。第二个参数为连接队列的最大长度。
  • accept:接受客户端连接,返回新的套接字用于通信。client_addr保存客户端地址信息。

2.1.4 发送和接收数据

const char* message = "Hello, Client!";
send(newsockfd, message, strlen(message), 0);
 
char buffer[1024];
int n = recv

你可能感兴趣的:(服务器,运维)