Как можно было бы соединить два клиента позади брандмауэров?

Если Вы похожи на меня, кто не имеет никакого формального образования информатики и интересуется, создавать/хотеть, чтобы знать, как работает компилятор:

я, рекомендуют "Процессоры языка программирования в Java: Компиляторы и Интерпретаторы", удивительная книга для программиста-самоучки.

С моей точки зрения, понимая их теория языка Бэйсик, автоматизируют машину, и теория множеств не является большой проблемой. Проблема состоит в том, как превратить те вещи в код. Вышеупомянутая книга говорит Вам, как записать синтаксический анализатор, аналитический контекст, и сгенерировать код. Если Вы не можете понять эту книгу, то я должен сказать, бросить создавать компилятор. Книга лучше всего программирует книгу, которую я когда-либо читал.

существует другая книга, также хорошая, Дизайн Компилятора в C. Существует много кода, и он говорит Вам все о том, как создать инструменты компилятора и лексического анализатора.

Здание компилятор является забавной практикой программирования и может преподавать Вам "кучу" программирования навыков.

не покупают книга Дракона. Это было пустой тратой денег и время и не для практика.

6
задан user149100 19 August 2009 в 15:51
поделиться

5 ответов

Я использовал программу под названием Hamachi , которая немного похожа на одноранговую vpn (виртуальная сеть-сеть). Затем я написал клиент-серверные приложения как есть. Это был быстрый способ получить функциональность подключения через Интернет без уловок, необходимых для работы с маршрутизаторами NAT.

Если вам нужно сделать это «должным образом», одним из распространенных методов является пробивка отверстий в udp . Когда вы отправляете веб-запрос, ваш брандмауэр знает, что в ответ ожидаются данные. Уловка состоит в том, что и клиент A, и клиент B связываются с сервером в Интернете. Сервер передает сведения о сделанном клиентом A запросе клиенту B и наоборот. Как только начальное соединение установлено, они могут продолжить общение, даже если главного сервера больше нет.

5
ответ дан 10 December 2019 в 02:51
поделиться

Существует метод, используемый многими клиентами, называемый "pin holing":

Я отправляю вам UDP-пакет, который пробивает дыру в моем брандмауэре (позволяя UDP-пакетам, которые, как предполагается, являются ответами моего брандмауэра, отправляться вами и приниматься мне). Этот пакет отбрасывается вашим брандмауэром.

Вы отправляете мне UDP-пакет, проделывая дыру в вашем брандмауэре. Этот пакет должен дойти до меня, после чего я могу отправить еще один, чтобы связаться с вами, и мы сможем общаться через наши брандмауэры по UDP.

6
ответ дан 10 December 2019 в 02:51
поделиться

Если бы я реализовывал это, я бы рассмотрел несколько вариантов.

  1. Попросите брандмауэр перенаправить заданный порт на ПК внутри сети. Это позволит вам подключиться к серверу из внешнего мира.

  2. Попросите клиента (ов) за брандмауэром подключиться к видимому серверу за пределами брандмауэра.

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

0
ответ дан 10 December 2019 в 02:51
поделиться

Если оба клиента находятся за брандмауэром, который не был поврежден, и не используется программное обеспечение VPN, они общаются через сторонний сервер. Период.

0
ответ дан 10 December 2019 в 02:51
поделиться

Делайте то, что делают большинство троянов:

Обратное соединение

EDIT:

если две машины находятся за брандмауэрами, вам понадобится какой-то третий прокси-сервер

-2
ответ дан 10 December 2019 в 02:51
поделиться
Другие вопросы по тегам:

Похожие вопросы: