2011-01-03 4 views
1

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

Обратите внимание, что хотя я не прошу ввести код (что бы, конечно, побить мою цель), я думаю, что некоторые небольшие фрагменты не пострадают. В любом случае, что я действительно хочу, это «рекомендуемая процедура», я имею в виду то, что Microsoft рекомендует для этой среды и документации :)

ответ

3

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

  1. Peer открытие - обнаружение других экземпляров в сети и выяснить, если они до сих пор в Интернете или не
  2. сообщений - проектирование по протоколу провода для вашего приложения
  3. безопасности - такие вещи, как шифрование, предотвращение повторного воспроизведения атаки и т.д.

в конце концов (как только вы поняли основные понятия), вы хотите, чтобы отложить все от этого к структуре, а не к разработке все с нуля. Думаю, WCF peer-to-peer подойдет вашим потребностям.

1

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

+0

Это идея :), но как я могу слушать порты и подключаться к ним? – PedroC88

2

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

Об обнаружении других экземпляров на LAN Я мог бы сказать, что вам нужен алгоритм сканирования. Большинство worms имеют такой алгоритм для распространения. Вы должны рассмотреть многие сетевые проблемы, такие как открытые порты в целевом LAN и ограничения брандмауэра.

Еще один пункт мог бы использовать порт TCP более 5000 (до 65535, но не использовать известные порты), так как порты под 5000 могут использоваться операционной системой.

Также необходим собственный протокол по протоколу TCP/IP для обмена сообщениями/передачи данных и передачи данных между одноранговыми узлами.

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

+0

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

+2

Хорошо. Поэтому не беспокойтесь о проблемах с сетью. Во-первых, вам нужна тестовая среда. Просто используйте несколько виртуальных машин (виртуальная машина Microsoft - хороший выбор) и начните с написания консольным приложениям, обменивающимся «TCP/IP» и написанием результатов на консоли, один как сервер, а другой как клиент. Затем вы можете написать более сложные (как серверные, так и клиентские сверстники) – Xaqron

Смежные вопросы