Я пытаюсь написать приложение, которое подключается к нескольким IP-адресам/портам, и проблема, с которой я сталкиваюсь, заключается в том, что количество IP-адресов неизвестно мне, поэтому один отдел может использовать это соединение до 2 ips и другого отдела могут подключаться к 8, поэтому его нужно настраивать во время выполнения, я думаю об использовании потоков или fork внутри цикла, но не уверен, какой из них лучше для работы, надеюсь, что кто-то может направить меня сюда, Я использую C под Linux.TCP-сокет для нескольких IP-портов
Например можно запустить его, как это a.out ip1 port1 ip2 port2 IP3 port3 и другие могут запустить его, как этот a.out a.out ip1 port1
Благодаря
# 2 имеет очень важное значение - он делает программу многопоточной. Это превращает вас в захватывающий мир условий гонки, разрушения данных, блокировок и тупиков. Это необходимо учитывать. – ugoren
Вы имеете в виду, что fd будет делиться между потоками, не так ли? –
@BagDev no. В таких проектах каждый поток получает свой собственный fd (передается ему потоком accept() при подключении клиента) и работает независимо. Чтобы получить проблему с взаимоблокировками и т. Д., Вам нужно будет специально закодировать код. Если сервер просто выполняет запрос/ответ со своим собственным клиентом, он становится блокирующим циклом чтения/записи. Проблемы могут возникнуть, если один клиент-серверный поток хочет связаться с другим fd (например, чатом). Верно, что грубая ошибка в одном потоке (например, дикий указатель) действительно может удалить все приложение, но для этого вам нужно написать действительно плохой код. –