Определить пользователя и машину в локальной сети - PullRequest
1 голос
/ 27 августа 2009

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

А также перечисляет имя пользователя, имя хоста и IP-адреса пользователей.

Как это можно сделать? Нет сервера для маршрутизации сообщений, и при проверке с помощью команды netstat в CMD он не показывает никаких подробностей, таких как протокол и порт используя для общения.

Исходный код также доступен на том же сайте, который находится в VC ++. Я не понял строку кода ... (я парень на C #)

Может кто-нибудь объяснить мне, как это можно сделать?

Ответы [ 3 ]

3 голосов
/ 27 августа 2009

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

Аналогичный механизм используется, когда проводник Windows пытается найти другие машины в сети. Хорошее описание этого типа многоадресного обнаружения описано здесь .

3 голосов
/ 27 августа 2009

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

0 голосов
/ 01 сентября 2009

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

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

Приложение представляет собой одноранговое программное обеспечение и не требует программного обеспечения центрального сервера для маршрутизации сообщений. у него есть только маленький демон, который принимает входящие соединения. Именно так работает протокол мгновенных сообщений Jabber.


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

Вы можете использовать ARP / ICMP Ping, чтобы узнать хосты, присутствующие в вашей сети, при условии, что вы ввели правильную информацию о подсети


Многоадресная рассылка сообщений также не представляет собой ничего особенного. Это функция, предоставляемая всеми сетевыми стеками.

Если вы хотите выполнять групповую передачу в .NET, это разрешено. Проверьте эту страницу в Code Project, которая дает хороший пример

...