Visual Basic, .NET, ASP, VBScript
 

   
   
     

Форум - Общий форум

Страница: 1 |

 

  Вопрос: Сеть Добавлено: 18.03.06 13:16  

Автор вопроса:  Softer | Web-сайт: hware.org.ua | ICQ: 203660381  
Как определить по IP адресу в сети комп или нет?

Ответить

  Ответы Всего ответов: 11  

Номер ответа: 1
Автор ответа:
 ViktorZ



ICQ: 271202919 

Вопросов: 56
Ответов: 837
 Профиль | | #1 Добавлено: 18.03.06 13:56
ping <ur ip>

Ответить

Номер ответа: 2
Автор ответа:
 Softer



ICQ: 203660381  

Вопросов: 29
Ответов: 205
 Web-сайт: hware.org.ua
 Профиль | | #2
Добавлено: 18.03.06 14:05
а без пинга?

Ответить

Номер ответа: 3
Автор ответа:
 Fever



Вопросов: 60
Ответов: 808
 Профиль | | #3 Добавлено: 18.03.06 15:55
Нельзя. Только функция, которая тоже вызывает пинг. Ну, можно разобраться в интерфейсах...

Ответить

Номер ответа: 4
Автор ответа:
 Fever



Вопросов: 60
Ответов: 808
 Профиль | | #4 Добавлено: 18.03.06 15:58
Звиняюсь, протоколах

Ответить

Номер ответа: 5
Автор ответа:
 Softer



ICQ: 203660381  

Вопросов: 29
Ответов: 205
 Web-сайт: hware.org.ua
 Профиль | | #5
Добавлено: 18.03.06 16:03
а какой у пинга э.... порт....? :)

Ответить

Номер ответа: 6
Автор ответа:
 Sharp


Лидер форума

ICQ: 216865379 

Вопросов: 106
Ответов: 9979
 Web-сайт: sharpc.livejournal.com
 Профиль | | #6
Добавлено: 18.03.06 16:54
typedef unsigned int IPAddr;

typedef struct ip_option_information{
UCHAR Ttl;
UCHAR Tos;
UCHAR Flags;
UCHAR OptionsSize;
PUCHAR OptionsData;
} IP_OPTION_INFORMATION, *PIP_OPTION_INFORMATION;

typedef struct icmp_echo_reply {
    IPAddr  Address;            // Replying address
    ULONG   Status;             // Reply IP_STATUS
    ULONG   RoundTripTime;      // RTT in milliseconds
    USHORT  ;DataSize;           // Reply data size in bytes
    USHORT  Reserved;           // Reserved for system use
    PVOID   Data;               // Pointer to the reply data
    struct ip_option_information Options; // Reply options
} ICMP_ECHO_REPLY, *PICMP_ECHO_REPLY;


typedef HANDLE (WINAPI *pIcmpCreateFile)();
typedef BOOL (WINAPI *pIcmpCloseHandle)(HANDLE);
typedef DWORD (WINAPI *pIcmpSendEcho)(HANDLE, IPAddr, LPVOID,
    WORD, PIP_OPTION_INFORMATION, LPVOID, DWORD, DWORD);

pIcmpCreateFile IcmpCreateFile = NULL;
pIcmpCloseHandle IcmpCloseHandle = NULL;
pIcmpSendEcho IcmpSendEcho = NULL;


bool GetIcmpProcAddr(){
HMODULE hIcmpLib = GetModuleHandle("iphlpapi.dll";);
if(hIcmpLib == NULL) hIcmpLib = LoadLibrary("iphlpapi.dll";);

IcmpCreateFile = (pIcmpCreateFile)GetProcAddress(hIcmpLib, "IcmpCreateFile";);
IcmpCloseHandle = (pIcmpCloseHandle)GetProcAddress(hIcmpLib, "IcmpCloseHandle";);
IcmpSendEcho = (pIcmpSendEcho)GetProcAddress(hIcmpLib, "IcmpSendEcho";);

return (IcmpCreateFile != NULL && IcmpCloseHandle != NULL && IcmpSendEcho != NULL);
}


bool ping(char *ip){
char *SendData = ";Data Buffer";
LPVOID ReplyBuffer;
DWORD dwRetVal;
bool res = false;
int PingTimeout = 1000;
ReplyBuffer = (VOID *) new BYTE [sizeof(ICMP_ECHO_REPLY) + sizeof(SendData)];
ULONG ipaddr = inet_addr(ip);

HANDLE hIcmpFile = (IcmpCreateFile)();
if(hIcmpFile != INVALID_HANDLE_VALUE){
if ((dwRetVal = IcmpSendEcho(hIcmpFile, ipaddr, SendData, sizeof(SendData),
NULL, ReplyBuffer, sizeof(ReplyBuffer) + sizeof(ICMP_ECHO_REPLY), PingTimeout)) != 0){
if(((ICMP_ECHO_REPLY *)ReplyBuffer)->Status == 0 &&
ipaddr == ((ICMP_ECHO_REPLY *)ReplyBuffer)->Address) res = true;
}
(IcmpCloseHandle)(hIcmpFile);

}
delete [] ReplyBuffer;
return res;
}

Ответить

Номер ответа: 7
Автор ответа:
 Softer



ICQ: 203660381  

Вопросов: 29
Ответов: 205
 Web-сайт: hware.org.ua
 Профиль | | #7
Добавлено: 18.03.06 17:21
Сорри.... а.... на.... ВБ..... мона......? :)

Ответить

Номер ответа: 8
Автор ответа:
 GSerg



Вопросов: 0
Ответов: 1876


 Профиль | | #8 Добавлено: 18.03.06 17:37
Сории... а... сам... найти... не мог.... ?

http://support.microsoft.com/default.aspx?scid=kb;en-us;300197

Ответить

Номер ответа: 9
Автор ответа:
 Softer



ICQ: 203660381  

Вопросов: 29
Ответов: 205
 Web-сайт: hware.org.ua
 Профиль | | #9
Добавлено: 18.03.06 17:46
Огромное спасибо! Это вроде то что и хотел! Еси будут вопросы то спрашивать ессно буду здеся! :)

Ответить

Номер ответа: 10
Автор ответа:
 DaaGER



ICQ: 329195567 

Вопросов: 52
Ответов: 67
 Web-сайт: smartic.ru
 Профиль | | #10
Добавлено: 18.03.06 18:09
Можно сделать так:
WinsockInit
MsgBox HostByAddress(Text2.Text)'Text2.text откуда берём IP
Код модуля:
Function HostByAddress(ByVal sAddress As String) As String
Dim lAddress As Long
Dim p As Long
Dim HostName As String
Dim Host As T_Host
lAddress = inet_addr(sAddress)
p = gethostbyaddr(lAddress, 4, PF_INET)
If p <> 0 Then
CopyMemory Host, ByVal p, Len(Host)
HostName = String(256, 0)
CopyMemory ByVal HostName, ByVal Host.h_name, 256
If HostName = "" Then HostByAddress = "Unable to Resolve Address"
HostByAddress = Left(HostName, InStr(HostName, Chr(0)) - 1)
Else
HostByAddress = "ОШИБОЧКА"
End If
End Function
И сделай так- если HostByAddress равен "ОШИБОЧКА" тогда сообщение, что камп не в сети!!!

Ответить

Номер ответа: 11
Автор ответа:
 Softer



ICQ: 203660381  

Вопросов: 29
Ответов: 205
 Web-сайт: hware.org.ua
 Профиль | | #11
Добавлено: 18.03.06 19:24
интересно, попробую... спасибо.

Ответить

Страница: 1 |

Поиск по форуму



© Copyright 2002-2011 VBNet.RU | Пишите нам