У меня есть компьютер, который связывается с камерой через UDP через физический кабель (без маршрутизатора или коммутатора). Камера действует как сервер UDP, а компьютер - как клиент. Время от времени система зависает во время передачи изображения, строка за строкой. Мое программное обеспечение Java ожидает строку изображения, которая никогда не принимается, и я считаю, что это может быть вызвано переполнением буфера приема.

Я пытался увеличить максимальный размер буфера приема в /etc/sysctl.conf

sysctl -w net.core.rmem 1000000

Моя программа запрашивает 7000000 байт, но во время выполнения сообщает, что она получила только 212992 байта.

Когда я пытаюсь задать ОС минимальный, стандартный и максимальный размер:

sysctl -a | grep usb 
net.ipv4.udp mem 185535    247780  371670

Как мне получить больший буфер? Sysctl даже читается? ТИА

1 ответ1

0

Редактирование в /etc/sysctl.conf было ошибочным, оно должно было читаться, как показано ниже, и я должен был также увеличить значение по умолчанию:

net.core.rmem_max=1000000
net.core.rmem_default=1000000

Я не знаю, почему приведенное ниже не будет работать, когда я ввел его вручную, но я все равно хотел, чтобы значения были установлены при загрузке.

sysctl -w net.core.rmem 1000000

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .