Каков наилучший способ получения нескольких сообщений TCP от нескольких клиентов на сервере Linux?
Я пытаюсь сделать что-то похожее на flightaware / flightradar24 / adsb-exchange, но не знаю, как это сделать.об этом.
Я обнаружил, что для кода на стороне клиента, socat
- лучший вариант.Поскольку каждый клиент будет получать до 200-600 сообщений в секунду на порт, и ему необходимо пересылать каждое сообщение на порт с минимальной задержкой (curl
- при каждом сообщении возникают проблемы с перегревом и отставанием).
Я пытался использовать socat
, но я не знаю, как обрабатывать получение этих сообщений.Как и при настройке прослушивателя, он подключается только к клиентам, которые запускают socat
после запуска прослушивания socat
прослушивателя, и игнорирует предыдущие подключения socat
.Похоже, что в конечном итоге он также отключает сокеты и не имеет избыточности в случае, когда серверу слушателя необходимо перезапустить.
Если возможно, я бы также хотел найти способ идентифицировать клиента, отправляющего сообщение, по возможности по ipили добавив что-либо к сообщению в порту до того, как socat
проксирует его (с небольшим дополнительным аппаратным воздействием).
Я извиняюсь за несколько расплывчатый вопрос, я подумал о том, как лучше всего это сделать длянесколько недель, и постоянно изучал / задавал вопросы тем, кто уже сделал что-то подобное, но я получаю ответ «вам нужно выяснить, как отправлять огромное количество TCP-сообщений», в котором я не знаюлучший способ получить такое.