Страница: 1 |
Страница: 1 |
Вопрос: Сеть
Добавлено: 18.03.06 13:16
Автор вопроса:
Softer | Web-сайт:
Как определить по IP адресу в сети комп или нет?
Ответы
Всего ответов: 11
Номер ответа: 1
Автор ответа: ViktorZ
ICQ: 271202919
Вопросов: 56
Ответов: 837
Профиль | | #1
Добавлено: 18.03.06 13:56
ping <ur ip>
Номер ответа: 2
Автор ответа: Softer
ICQ: 203660381
Вопросов: 29
Ответов: 205
Web-сайт:
Профиль | | #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-сайт:
Профиль | | #5
Добавлено: 18.03.06 16:03
а какой у пинга э.... порт....?
Номер ответа: 6
Автор ответа: Sharp
Лидер форума
ICQ: 216865379
Вопросов: 106
Ответов: 9979
Web-сайт:
Профиль | | #6
Добавлено: 18.03.06 16:54
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  ataSize; // 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 = "ata 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-сайт:
Профиль | | #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-сайт:
Профиль | | #9
Добавлено: 18.03.06 17:46
Огромное спасибо! Это вроде то что и хотел! Еси будут вопросы то спрашивать ессно буду здеся!
Номер ответа: 10
Автор ответа: DaaGER
ICQ: 329195567
Вопросов: 52
Ответов: 67
Web-сайт:
Профиль | | #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-сайт:
Профиль | | #11
Добавлено: 18.03.06 19:24
интересно, попробую... спасибо.