Форум: "Сети";
Текущий архив: 2004.02.29;
Скачать: [xml.tar.bz2];
Вниз
Помогите с айпишником Найти похожие ветки
← →
Alex21 (2003-12-25 15:13) [0]Здраствуйте мастера у меня такая проблема. Вот алгоритм сбора айпишников , но он их собирает если все комы включены. Помогите срочно надо...
Procedure ipadress;
var zzz: integer;
var qqq:integer;
WSAData : TWSAData;
p : PHostEnt;
Name : array [0..$FF] of Char;
begin
qqq:=1;
for zzz:= qqq to form1.StringGrid1.RowCount -1 do
begin
Application.ProcessMessages;
WSAStartup($0101, WSAData);
GetHostName(name, $FF);
try
p := GetHostByName(Pchar(form1.StringGrid1.Cells[0,zzz]));
except
//Хрен знает
end;
Application.ProcessMessages;
Form1.StringGrid1.Cells[1,zzz]:=(inet_ntoa(PInAddr(p.h_addr_list^)^));
WSACleanup;
end;
end;
Помогите срочно прошу........
Александр....
← →
Lion_ua (2003-12-25 15:21) [1]сиплюсплюсный код:
//---------------------------------------------------
void MachineIP(char *result)
{
WSADATA WSAData;
WSAStartup(MAKEWORD(1,1), &WSAData);
char dot[6];
int iResult;
int i = 0;
u_long *ppIpNO;
u_long *pIpNO;
HOSTENT FAR *lphostent;
u_long ipHO;
unsigned char binIp[4];
int iterations = 0;
//Get local host name and crudely validate
char szHostName[100];
*result = 0;
iResult = gethostname(szHostName, sizeof(szHostName));
// printf("%d %s",iResult,szHostName);
if ((iResult != 0) || (lstrcmp(szHostName, "")==0))
return;
//Lok up this host info via supplied name
lphostent = gethostbyname(szHostName);
if (lphostent == NULL)
return;
//Retreive first entry (might have multiple connects)
do
{
iterations++;
ppIpNO = (u_long *)lphostent->h_addr_list;
if (ppIpNO+i == NULL)
return;
pIpNO = ((u_long *)*(ppIpNO+i));
if (pIpNO == NULL)
return;
//convert back to host order, since SOCKADDR_IN expects that
//MessageBox(NULL,"z","x",MB_OK);
ipHO = ntohl(*pIpNO);
binIp[0] = (BYTE)((ipHO & 0xff000000) >> 24);
itoa(binIp[0], dot, 10);
strcat(result,dot);
binIp[1] = (BYTE)((ipHO & 0x00ff0000) >> 16);
itoa(binIp[1], dot, 10);
strcat(result, "."); strcat(result, dot);
binIp[2] = (BYTE)((ipHO & 0x0000ff00) >> 8);
itoa(binIp[2], dot, 10);
strcat(result, "."); strcat(result, dot);
binIp[3] = (BYTE)(ipHO & 0x000000ff);
itoa(binIp[3], dot, 10);
strcat(result,"."); strcat(result, dot);
strcat(result,"\r\n");
i++;
} while ((pIpNO != NULL) && (iterations < 6));
WSACleanup();
PostQuitMessage(0);
return;
}
← →
Lion_ua (2003-12-25 15:31) [2]Используеш WinSocks API, описанные в модуле WinSocks.pas
--------------------------------------------------------
uses
WinSock;
procedure GetHostInfo(var Name, Address: string);
var
WSAData: TWSAData;
HostEnt: PHostEnt;
begin
{ no error checking...}
WSAStartup(2, WSAData);
SetLength(Name, 255);
Gethostname(PChar(Name), 255);
SetLength(Name, StrLen(PChar(Name)));
HostEnt := gethostbyname(PChar(Name));
with HostEnt^ do
Address := Format("%d.%d.%d.%d",[
Byte(h_addr^[0]),
Byte(h_addr^[1]),
Byte(h_addr^[2]),
Byte(h_addr^[3])]);
WSACleanup;
end;
Кроме того, можно просто бросить TCP компонент с закладки Internet на форму и использовать его свойства.
---------------------------------------------------------
Memo1.Lines.Add(TCP1.LocalHostName);
Memo1.Lines.Add(TCP1.LocalIp);
Страницы: 1 вся ветка
Форум: "Сети";
Текущий архив: 2004.02.29;
Скачать: [xml.tar.bz2];
Память: 0.45 MB
Время: 0.012 c