как получить IP-адрес компьютера, который напрямую подключен к моему ПК

0

Я пытаюсь написать функцию, которая может получить мне IP-адрес (и имя устройства в качестве бонуса) устройств, которые находятся в моей сети, сеть будет прямым соединением между двумя компьютерами с использованием кабеля Ethernet или созданием точка доступа (с использованием wi-fi)

Я попытался найти, как это сделать, но мне кажется, что мне нужно слушать сеть или что-то, что кажется трудным.

надеюсь, что вы можете направить меня к тому, что я должен делать или читать, чтобы начать.

Примечание. Я использую Windows на обоих компьютерах.

Отредактировано: PS: Мне нужен IP-адрес, поэтому я могу отправить сообщение на другой компьютер с помощью winsock в программе Client/Server, которую я написал. не могу ли я заставить сервер отправлять свой IP-адрес клиенту или наоборот?

  • 0
    Как правило, вам нужно знать имя устройства или адрес для установления соединения. Можно исследовать весь диапазон адресов или пассивно прослушивать, но оба метода имеют проблемы. Это похоже на случай поиска ответов не в том месте. Попробуйте изменить ситуацию, чтобы у вас было фиксированное имя или адрес для подключения.
  • 0
    @ChrisRyding Я написал две программы (клиент / сервер), которые могут отправлять / получать сообщения, но вы узнали IP-адрес получателя. Разве я не могу написать, как одна из этих программ отправляет информацию о компьютере в сеть, чтобы другая программа могла получить ее или что-то еще?
Показать ещё 1 комментарий
Теги:
networking
ip-address

1 ответ

1
Лучший ответ

Если ваше программное обеспечение работает на обеих машинах, вы можете иметь одну (или обе) машины для отправки определенного пакета UDP (или, если хотите, многоадресной рассылки) на определенный порт. Ваша программа также должна прослушивать тот же порт. Когда он получает этот пакет (используя recvfrom()), recvfrom() пятый аргумент будет содержать IP-адрес машины, отправившей пакет, то есть желаемый IP-адрес.

(Если OTOH ваше программное обеспечение не запущено на удаленном компьютере, вам нужно будет использовать еще один механизм обнаружения общего назначения, такой как mDNS или LLDP - надеюсь, вам не придется это делать, хотя это и хорошо более сложный)

  • 0
    спасибо, думаю это то что мне было нужно. PS: вы можете иметь в виду четвертый аргумент recvform, потому что из того, что я только что прочитал, 5-й аргумент - это указатель на размер буфера 4-го аргумента.
  • 0
    Пятый аргумент кажется мне правильным: int recvfrom (SOCKET s, char * buf, int len, int flags, struct sockaddr * from, int * fromlen);

Ещё вопросы

Сообщество Overcoder
Наверх
Меню