Главная страница

Новости

Вопрос-ответ

Скрипты

ActiveX

Статьи

Книжная полка

Knowledge Base

Конференции

Ссылки

 

Гостевая книга

Напишите мне письмо

 

Подписка на рассылку

Рассылка 'Windows Scripting'  Архив

 

 

Лучше смотреть с Microsoft Internet Explorer 4.0 и выше

 

Создано с помощью UltraEdit

 

Как узнать IP-адрес удаленного компьютера?

Узнать IP-адрес удаленного компьютера можно, например, с помощью Microsoft Winsock control.

Некоторые особенности кода:

Во-первых, для TCP-соединения с удаленным сервером мы будем использовать порт 139, на котором "сидит" NETBIOS. Как правило, этот порт доступен всегда.

А самое интересное, метод Connect является асинхронным - то есть возврат из него осуществляется сразу же, не дожидаясь установления соединения. Чтобы узнать о соединении (или о произошедшей ошибке), нам нужно дождаться события Connect (или, соответственно, события Error). Реализовать это в скрипте не так уж и просто. Воспользуемся простейшим вариантом - после метода Connect покажем message box, а после получения события - закроем его.

В-третьих, обратите внимание, как мы из скрипта закрываем диалог - с помощью метода SendKeys стандартного объекта WScript.Shell мы посылаем диалогу сообщение о нажатии клавиши Escape.

Листинг: ip_remote.vbs

Option Explicit

Const AppName = "Remote IP"

Dim Server
Server = InputBox("Enter server name:", AppName)
If Len(Server) = 0 Then WScript.Quit

Dim Winsock
Set Winsock = WScript.CreateObject("MSWinsock.Winsock", "Winsock_")

Winsock.Connect Server, 139

Dim Shell
Set Shell = WScript.CreateObject("WScript.Shell")

MsgBox "Please wait...", vbInformation, AppName

Set Winsock = Nothing

Set Shell = Nothing

Sub Winsock_Connect
	MsgBox "IP address for " & Server & " is " & _
		Winsock.RemoteHostIP, vbInformation, AppName
	CloseMsgBox
End Sub

Sub Winsock_Error(Number, Description, Scode, Source, _
		HelpFile, HelpContext, CancelDisplay)
	MsgBox "Error " & Number & vbNewLine & Description, vbCritical, AppName
	CloseMsgBox
End Sub

Sub CloseMsgBox
	Shell.AppActivate AppName
	Shell.SendKeys "{ESC}"
End Sub

Смотри также

  • Как узнать IP-адрес локального компьютера?