#include <iostream>
#include <sys/socket.h>
#include <netinet/in.h>
#include <unistd.h>
#include <string.h>

int main() {
    int server_fd, new_socket;
    struct sockaddr_in address;
    int opt = 1;
    int addrlen = sizeof(address);
    char buffer[1024] = {0};
    const char* hello = "Hello from server";

    // 创建 socket 文件描述符
    if ((server_fd = socket(AF_INET, SOCK_STREAM, 0)) == 0) {
        perror("socket failed");
        exit(EXIT_FAILURE);
    }

    // 设置套接字选项
    if (setsockopt(server_fd, SOL_SOCKET, SO_REUSEADDR | SO_REUSEPORT, &opt, sizeof(opt))) {
        perror("setsockopt");
        exit(EXIT_FAILURE);
    }

    // 绑定套接字到端口
    address.sin_family = AF_INET;
    address.sin_addr.s_addr = INADDR_ANY;
    address.sin_port = htons(8080);

    if (bind(server_fd, (struct sockaddr *)&address, sizeof(address)) < 0) {
        perror("bind failed");
        exit(EXIT_FAILURE);
    }

    // 开始监听
    if (listen(server_fd, 3) < 0) {
        perror("listen");
        exit(EXIT_FAILURE);
    }

    // 等待客户端连接
    if ((new_socket = accept(server_fd, (struct sockaddr *)&address, (socklen_t*)&addrlen)) < 0) {
        perror("accept");
        exit(EXIT_FAILURE);
    }

    // 向客户端发送消息
    send(new_socket, hello, strlen(hello), 0);
    std::cout << "Hello message sent" << std::endl;

    // 关闭连接
    close(new_socket);
    close(server_fd);
    return 0;
}

``````language
#include <iostream>
#include <sys/socket.h>
#include <netinet/in.h>
#include <unistd.h>
#include <string.h>

int main() {
    int sock = 0;
    struct sockaddr_in serv_addr;
    char buffer[1024] = {0};
    const char* hello = "Hello from client";

    // 创建 socket 文件描述符
    if ((sock = socket(AF_INET, SOCK_STREAM, 0)) < 0) {
        std::cerr << "Socket creation error" << std::endl;
        return -1;
    }

    // 设置服务器地址和端口
    serv_addr.sin_family = AF_INET;
    serv_addr.sin_port = htons(8080);

    // 将 IPv4 地址从文本转换为二进制形式
    if (inet_pton(AF_INET, "127.0.0.1", &serv_addr.sin_addr) <= 0) {
        std::cerr << "Invalid address/ Address not supported" << std::endl;
        return -1;
    }

    // 连接到服务器
    if (connect(sock, (struct sockaddr *)&serv_addr, sizeof(serv_addr)) < 0) {
        std::cerr << "Connection Failed" << std::endl;
        return -1;
    }

    // 向服务器发送消息
    send(sock, hello, strlen(hello), 0);
    std::cout << "Hello message sent to server" << std::endl;

    // 接收来自服务器的消息
    read(sock, buffer, 1024);
    std::cout << "Server says: " << buffer << std::endl;

    // 关闭连接
    close(sock);
    return 0;
}
https://www.bcoi.cn/d/gfhd/blog/232/68d2a4c65e3b6adf76b97e77



https://www.bcoi.cn/d/gfhd/blog/232/68d3eaa75e3b6adf76ba131f



#include<bits/stdc++.h>
using namespace std;
int a[10][10];  
bool ch(int x, int y, int num) {
    for(int i = 1; i <= 9; i++) {
        if(a[x][i] == num) {
            return false;
        }
    }
    for(int i = 1; i <= 9; i++) {
        if(a[i][y] == num) {
            return false;
        }
    }
    int s = (x - 1) / 3 * 3 + 1;  
    int st = (y - 1) / 3 * 3 + 1; 
    for(int i = 0; i < 3; i++) {
        for(int j = 0; j < 3; j++) {
            if(a[s + i][st + j] == num) {
                return false;
            }
        }
    }
    return true;
}
bool dfs() {
    for(int i = 1; i <= 9; i++) {
        for(int j = 1; j <= 9; j++) {
            if(a[i][j] == 0) {
                for(int num = 1; num <= 9; num++) {
                    if(ch(i, j, num)) { 
                        a[i][j] = num;  
         
                        if(dfs()) {
                            return true;
                        }
                        a[i][j] = 0;    
                    }
                }
          
                return false;
            }
        }
    }
 
    return true;
}

int main() {
    for(int i = 1; i <= 9; i++) {
        for(int j = 1; j <= 9; j++) {
            cin >> a[i][j];
        }
    }
    dfs();
    for(int i = 1; i <= 9; i++) {
        for(int j = 1; j <= 9; j++) {
            cout << a[i][j];
            if(j != 9) cout << " "; 
        }
        cout << endl; 
    }
    return 0;
}