Для создания сервера с поддержкой множества соединений можно воспользоваться разными подходами в зависимости от технологии и языка программирования. Покажу пример на языке Python с использованием стандартной библиотеки `socket` для создания простого TCP-сервера.
```python
import socket
import threading
# Функция для обработки подключения клиента
def handle_client(client_socket, client_address):
print(f"Подключился клиент {client_address}")
# Принимаем данные от клиента (в цикле, если надо получать данные постоянно)
while True:
data = client_socket.recv(1024)
if not data:
break # Разрываем соединение, если клиент отключился
print(f"От {client_address}: {data.decode()}") # Декодируем и печатаем
client_socket.sendall(data) # Эхо-ответ клиенту
client_socket.close()
# Создаем TCP/IP сокет
server_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
# Задаем опции сокета
server_socket.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
# Биндим сокет на адрес и порт
server_host = 'localhost'
server_port = 12345
server_socket.bind((server_host, server_port))
# Переводим сокет в режим прослушивания
server_socket.listen(5)
print(f"Сервер запущен на {server_host}:{server_port}")
connections = [] # Массив для хранения данных о подключениях
try:
while True:
# Принимаем подключение
client_socket, client_address = server_socket.accept()
# Сохраняем данные подключения (хост и порт клиента)
connections.append({'host': client_address[0], 'port': client_address[1]})
# Создаем поток для обработки подключения
client_thread = threading.Thread(target=handle_client, args=(client_socket, client_address))
client_thread.start()
finally:
server_socket.close()
```
В данном примере мы создаем сервер, который слушает входящие соединения на порту `12345`. При подключении клиента мы запускаем для него отдельный поток, чтобы обработка его соединения не блокировала основной поток сервера, который продолжает слушать порт и принимать новые соединения.
Информация о подключениях сохраняется в списке `connections`, где каждый элемент - это словарь с хостом и портом клиента.
При обработке подключений важно корректно обрабатывать исключения и корректно закрывать соединения, чтобы сервер был устойчив к ошибкам клиентов.