This commit is contained in:
2025-11-17 11:26:08 +01:00
parent 895958d058
commit d5218da883
7 changed files with 575 additions and 0 deletions

53
lab5/main.c Normal file
View File

@@ -0,0 +1,53 @@
/*
* Сетевой чат с использованием неблокирующих сокетов и select()
*
* Компиляция: make
*
* Запуск: ./chatserver [порт]
* Примеры:
* ./chatserver
* ./chatserver 3425
*
* Остановка: pkill chatserver
*
* Просмотр логов:
* sudo journalctl -f -t CHAT-SERVER
* sudo journalctl -f -t CHAT-SERVER --since "now" -p info
*
* Подключение клиентов:
* telnet localhost 3425
*
* Использование чата:
* 1. При подключении введите свое имя
* 2. Отправляйте сообщения - они будут видны всем (broadcast)
* 3. Для личного сообщения: @имя: текст сообщения
* Пример: @Alice: привет, как дела?
* 4. Для группового сообщения: @имя1,имя2,имя3: текст сообщения
* Пример: @Alice,Bob: привет вам обоим!
*/
#include "server.h"
#include <stdio.h>
#include <stdlib.h>
int main(int argc, char *argv[]) {
int port = 3425;
if (argc > 1) {
port = atoi(argv[1]);
if (port <= 0 || port > 65535) {
fprintf(stderr, "Invalid port: %s\n", argv[1]);
fprintf(stderr, "Port must be between 1 and 65535\n");
return 1;
}
}
printf("Starting chat server on port %d...\n", port);
printf("Connect with: telnet localhost %d\n", port);
printf("View logs: sudo journalctl -f -t CHAT-SERVER\n");
printf("Stop server: pkill chatserver\n");
chat_server(port);
return 0;
}