Untitled
unknown
c_cpp
2 years ago
1.9 kB
8
Indexable
WSADATA wsaData;
    if (WSAStartup(MAKEWORD(2, 2), &wsaData) != 0) {
        fprintf(stderr, "Failed to initialize Winsock\n");
        return 1;
    }
    SOCKET serverSocket, clientSockets[MAX_CLIENTS];
    struct sockaddr_in serverAddr, clientAddr;
    int clientAddrLen = sizeof(clientAddr);
    char buffer0[BUFFER_SIZE], buffer1[BUFFER_SIZE];
    if ((serverSocket = socket(AF_INET, SOCK_RAW, IPPROTO_IP)) == INVALID_SOCKET) {
        fprintf(stderr, "Failed to create socket\n");
        WSACleanup();
        return 1;
    }
    int enable = 1;
    if (setsockopt(serverSocket, IPPROTO_IP, IP_HDRINCL, (char*)&enable, sizeof(enable)) == SOCKET_ERROR) {
        fprintf(stderr, "Failed to set IP_HDRINCL\n");
        closesocket(serverSocket);
        WSACleanup();
        return 1;
    }
    serverAddr.sin_family = AF_INET;
    serverAddr.sin_addr.s_addr = INADDR_ANY;
    serverAddr.sin_port = htons(PORT);
    // Привязка сокета к адресу
    if (bind(serverSocket, (struct sockaddr*)&serverAddr, sizeof(serverAddr)) == SOCKET_ERROR) {
        fprintf(stderr, "Bind failed\n");
        closesocket(serverSocket);
        WSACleanup();
        return 1;
    }
    // Ожидание подключения клиентов
    if (listen(serverSocket, MAX_CLIENTS) == SOCKET_ERROR) {
        fprintf(stderr, "Listen failed\n");
        closesocket(serverSocket);
        WSACleanup();
        return 1;
    }
    printf("Server waiting for incoming connections...\n");
    // Принятие подключений
    for (int i = 0; i < MAX_CLIENTS; ++i) {
        if ((clientSockets[i] = accept(serverSocket, (struct sockaddr*)&clientAddr, &clientAddrLen)) == INVALID_SOCKET) {
            fprintf(stderr, "Accept failed\n");
            closesocket(serverSocket);
            WSACleanup();
            return 1;
        }
        printf("Connection established with client %d\n", i + 1);
    }Editor is loading...
Leave a Comment