Макс Ш, А сервер 1 может получить доступ к серверу 2 по полученному из команды ip-адресу? Если да, то просто замените в DNS локальный ip, на полученный из команды.
Макс Ш, панель скорее всего готова работать на сервере за NAT с DMZ и постучалась на свой сервер, чтобы узнать внешний ip. А затем проверила может ли удалённый сервер достучаться до неё через этот ip. И не факт, что второй сервер в состоянии пройти эту проверку.
Выполните в консоли второго сервера curl -4 ifconfig.co и сравните полученный ip с внешним ip первого сервера. Для нормальной работы там должны быть разные адреса!
Внутренний ip, указывать в DNS бесполезно. Этот внутренний ip видит только Ваш Server1. Из общего интернета он вообще недоступен. Для меня тоже загадка зачем они создают за одним глобальным адресом целую сеть, куда можно достучаться только через проброс портов машиной с DMZ. Крайне неудобно. Нужно либо создать ещё одну сеть, с ещё одним платным публичным IP-адресом и создать на машине интерфейс подключенный к этой сети, либо купить у них целый диапазон таких адресов. В последнем случае уже никакого DMZ.
WPF считается неудачной технологией, потому, что вычисления на видеокарте это основная его суть. Только вот накладные расходы на передачу данных и задач в видеокарту не нулевые. Это совсем не ощущается, когда речь про миллион полигонов, но эти затраты огромны если нужно начертить горизонтальную полосу длинной в 20 точек. И WinForms тоже не полностью на CPU считается, например при перемещении окон и отрисовке полупрозрачных окон, GDI даёт задачу видеокарте. Возможно, что кривые(закругления) тоже считаются на ней. Ведь в любом случае каждый запрос на рисование линии, прямоугольника, кривой или строки текста уходит в ядро ОС. И там ядро уже решает, что ему стоит использовать.
Учитывая современные тенденции в разработке ПО, спрашивать стоило, стоит ли использовать Electron или хватит контролла WebBrowser. HTML тоже на видеокарте рендерится.
Сергей Васильев, я не говорил, что это он виноват. Но традиционно считается, что максимально стабильной конфигурацией является статическая. Если никто не может посреди дня начать перестраивать ядерные структуры, то сломаться, что-либо может только физически.
Сергей Васильев, Уверены? Наличие "интернета" на каждой из точек соединения ещё не гарантирует, что между самими двумя точками есть связь. Запустите непрерывный пинг на каждые половину секунды. И только если после события массовых потерь в GRE не наблюдается ни одного потерянного пакета в ping, Вы сможете утверждать, что проблема на Вашей стороне. Желательно при этом пинговать пакетами размером более 1000 байт.
Хотя сейчас столько ненадёжного и глючного ПО, что я не удивлюсь, что у Вас на несколько секунд отваливается маршрут ведущий в GRE туннель из какого-нибудь networkd/firewalld.
Я не разбирался глубоко, как pi-hole запускает процесс, но вообще вывод обычно можно передавать или в файл или в канал(pipe). Например есть функция popen, которая как раз подменяет поток вывода на свой канал и может делать с выводом всё, что угодно. Например записывать построчно в БД в таблицу хранимую в памяти с сохранением метки времени.
ИМХО long polling и тупой опрос по таймеру в наше дни использовать не комильфо. Зря что ли веб-сокеты изобретали.
Нужно понимать, что Thread это вытесняющая многозадачность, а Task кооперативная. То есть, при выполнении Task.Delay задача будет исполнена не раньше чем истечёт указанное время И не раньше, чем один из потоков ThreadPool освободится. Очевидно, что при этом оно может давать неадекватные задержки. Но в общем целом таски дешевле, так как не нужно обращаться к ядру ОС, выделять на каждый поток стек и т.д. Просто число потоков должно соответствовать числу ядер + числу задач выполняемых долго или синхронно ожидающих ответа от ядра, например из за Mutex.WaitOne() или File.Open().
Единственный способ сделать из винды роутер это включить Internet Connection Sharing. И совсем не факт, что оно умеет работать без DHCP. Если всё же работает, то на сервере, на интерфейсе локальной сети, шлюз указывать не нужно. Если роль проксируещего DNS-сервера настроена, то можно везде использовать IP-адрес сервера, 127.0.0.1 на нём самом так же должно работать. Хотя собственно без указания DNS-сервера на интерфейсе локальной сети всё так же должно работать.
Sazanovdm, А Вы собственно кто? В Вашем профиле на Q&A контактных данных нет и Хабр говорит, что пользователя Sazanovdm не существует... Можете писать на menone7 gmail com.
Вы вообще не должны использовать WCHAR* для хранения строк в которых не нужно изменять. Все виндовые строки передаются через LPCWSTR. Иначе Вы рано или поздно запишете в область памяти в которую писать нельзя. И словите соответствующую ошибку "Адрес 0xNNNNNNNN не может быть written".
Если речь про отладку, а не работу, то отладчик VS любит при многопоточности прыгать с одного потока на другой. Особенно если нынешнему нечем заняться. На работе приложения это никак не сказывается.
mercy_smile, ещё send завершается сразу после того как данные были успешно записаны в буфер сокета(локального, а не сервера), а recv когда захочет. Он вполне может вернуть 0, что значит было прочитано 0 байт. При ошибке recv возвращает -1. В реальной сети нужно ждать данные функцией select.
Надим Закиров, Если подумать есть способы запуска php разных версий и эти способы применимы к php с разными конфигами. Например этот скрипт можно запускать как CGI.