Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2004.02.29;
Скачать: CL | DM;

Вниз

Помогите с айпишником   Найти похожие ветки 

 
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;
Скачать: CL | DM;

Наверх




Память: 0.47 MB
Время: 0.031 c
6-94048
Jillyusus
2003-12-22 21:29
2004.02.29
Как передать сообщение?


6-94053
Silentor
2003-12-24 20:47
2004.02.29
класс TгарантированнядоставкаUDP ?


1-93913
OlimPer
2004-02-18 15:38
2004.02.29
копирование!!!!!!!


1-93871
olookin
2004-02-16 13:38
2004.02.29
Пиктограмма компонента


1-93891
Alex_rar
2004-02-18 14:09
2004.02.29
Создание картинок