Untitled
unknown
c_cpp
2 years ago
1.9 kB
5
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