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