Связь с устройством теряется при запуске сети при загрузке?

У меня есть приложение, которое открывает сокет на порту 4444 на устройство (/ dev / linkToDevice). «LinkToDevice» – это ссылка на ttyUSB0. Приложение представляет собой программу на C ++, которая теперь является демоном и запускается при загрузке. Демон запускается независимо от сети. Поэтому, когда загружается linux box, и нет сети, демон запускается немедленно, и пока сети не существует, я могу прекрасно общаться (telnet localhost 4444). Но, когда я подключаю сетевой кабель, или dhclient определяет, что нет DHCP и арендует мне ip-адрес по умолчанию, или просто просто передаю ему ip-интерфейс, я больше не могу общаться. Тем не менее, я могу открыть telnet-соединение, я просто не получаю ответа, когда я запрашиваю его.

Я использую 0.0.0.0 в качестве ip, чтобы открыть сокет (обозначая любой IP-адрес). Я не чувствую, что это проблема с кодом.

Нечетная часть для меня заключается в том, что после того, как я больше не могу общаться, если я перезапущу демона, все отлично работает, что и ожидается. Но когда я отключу сеть или отмените настройку интерфейса, или перезагрузите sudo /etc/init.d/networking, или каким-либо другим способом, который приведет к сбою и резервному копированию сети, через весь этот процесс я никогда не теряю связь с устройство. Так что проблема ТОЛЬКО случается, когда я загружаю машину без сети, чтобы начать, а потом я вдруг получаю сеть. Любые мысли о том, почему это происходит только при загрузке?

One Solution collect form web for “Связь с устройством теряется при запуске сети при загрузке?”

«В основном мне нужно знать разницу между получением интерфейса eth0 в первый раз после загрузки без сети и перезапуском сети для повторного получения интерфейса eth0 после того, как раньше был установлен. Код работает для последнего».

Прежде чем вы подходите к этому пути, исключите синонимы высокоуровневой сетевой службы («NetworkManager»). Я всегда отключил его и просто вставлял команды в процесс загрузки в какой-то подходящей точке (например, ifconfig eth0 up && dhclient eth0 ), затем вручную запускал другие простые скрипты для переключения с eth на wifi и т. Д. NetworkManager – гигантский осьминог автоматизации, который несомненно, очень полезен, если вы не знаете, что такое «интерфейс» или ходит с ноутбуком, пытающимся бродить по Wi-Fi-сетям, но если вы предпочитаете просто включать и выключать вещи самостоятельно, это может вызвать раздражающие и таинственные выбор. Я признаю, что никогда не узнал, как настроить его на том основании, что инструмент высокого уровня, который сложнее использовать для выполнения конкретной задачи, чем инструменты низкого уровня, которые он «управляет», не является подходящим инструментом в контексте этой задачи.

Если это не ясно:

когда я отключу сеть, или отконфигурируйте интерфейс, или перезапустите sudo /etc/init.d/networking

/etc/init.d/networking означает, что система .deb (.rpm использует /etc/init.d/network ). Отключите эту (и / или соответствующую службу upstart в системах, использующих выскочку), чтобы она не запускалась при загрузке и не заменяла ее любыми простыми командами, которые вам нужны для доступа к вашей сети где-то в конце процесса загрузки. Если он существует, я также прокомментирую все в /etc/network/interfaces кроме lo.

Обычно я не рассматривал бы этот хороший совет для раздачи другим пользователям, но твоя проблема для меня просто кричит: «Бетча – это гигантский осьминог», – что вам нужно, чтобы это было, прежде чем оглядываться.

  • Время TFTP в CentOS 7
  • Не удалось разрешить ошибку хоста
  • systemd-networkd по умолчанию, если dhcp не работает
  • isc-dhcp-сервер не запускается из-за сбоя интерфейса
  • Что происходит, когда я подключаю кабель Ethernet?
  • Arch Linux: Должен ли я хранить службу dhcpd, если я использую connman?
  • Подмена или удаление имени хоста DHCP-клиента в ответ на сервер DHCP
  • Попытка установить кластер, DHCP не запускается
  • Разрешение GRUB на доступ к сети в режиме BIOS
  • Создайте «реальный» второй сетевой интерфейс «на лету» для тестирования DHCP
  • Принудительный клиент dhcp, чтобы получить новую аренду
  • Linux и Unix - лучшая ОС в мире.