Описание:
Я разрабатываю эхо-сервер TCP, который получает данные от TCP-клиента и записывает их в последовательный порт. порт, а затем считывает данные обратно из последовательного порта для отправки их TCP-клиенту. Для тестирования я использую разъем обратной связи (/dev/ttyUSB0). Этот сервер предназначен только для практики!
Это также сервер приложений для записи в качестве TCP-клиента, который отправляет данные на наш сервер и рассчитывает пропускную способность.
Текущая пропускная способность составляет примерно 72 КБ/с, и я планирую увеличить ее до 80 КБ/с. Вот краткий обзор функциональности и настройки моего сервера:
Сервер прослушивает входящие TCP-соединения и обрабатывает их, используя неблокирующий сокет.
Данные, полученные от TCP-клиента, записываются в последовательный порт.
Данные, считанные из последовательного порта, отправляются обратно TCP-клиенту.
Я реализовал верхние/низкие водяные знаки для контроля того, когда приостанавливать или возобновлять запись в последовательный порт. (Поскольку существует разница в пропускной способности между TCP и последовательным портом)
Однако я изо всех сил пытаюсь достичь желаемой пропускной способности .
Вопросы:
Какие стратегии или оптимизации я могу применить для увеличения пропускной способности сервера?
Есть ли потенциальные узкие места в моей текущей реализации?
Есть ли более эффективные способы обработки последовательного порта и TCP-соединения для повышения производительности?
Описание: Я разрабатываю [b]эхо-сервер TCP[/b], который получает данные от TCP-клиента и записывает их в последовательный порт. порт, а затем считывает данные обратно из последовательного порта для отправки их TCP-клиенту. Для тестирования я использую разъем обратной связи (/dev/ttyUSB0). Этот сервер предназначен только для практики! Это также сервер приложений для записи в качестве TCP-клиента, который отправляет данные на наш сервер и рассчитывает пропускную способность. Текущая пропускная способность составляет примерно 72 КБ/с, и я планирую [b]увеличить ее до 80 КБ/с[/b]. Вот краткий обзор функциональности и настройки моего сервера: [list] [*]Сервер прослушивает входящие TCP-соединения и обрабатывает их, используя неблокирующий сокет. Данные, полученные от TCP-клиента, записываются в последовательный порт. [*]Данные, считанные из последовательного порта, отправляются обратно TCP-клиенту. [*]Я реализовал верхние/низкие водяные знаки для контроля того, когда приостанавливать или возобновлять запись в последовательный порт. ([b]Поскольку существует разница в пропускной способности между TCP и последовательным портом[/b]) [/list] Однако я изо всех сил пытаюсь достичь [b]желаемой пропускной способности [/b].
Вопросы: [list] [*]Какие стратегии или оптимизации я могу применить для увеличения пропускной способности сервера? [*]Есть ли потенциальные узкие места в моей текущей реализации? [*]Есть ли более эффективные способы обработки последовательного порта и TCP-соединения для повышения производительности? [/list]
/* Read data from socket , then writing to the serial port */ if (enable_write && FD_ISSET(client_fd, &read_fds)) { int valread = recv(client_fd, socket_buffer, BUFFER_SIZE, 0);
if (valread = 23000) { enable_write = false; // stop writing data to serial } else if (val