عرض مشاركة واحدة
 
قديم 04-20-2008, 09:38 AM   #1
معلومات العضو
alwadheh


آعجبنيً: 0
تلقي آعجاب مرة واحدة في مشاركة واحدة
$ 82  




صورتك المفضلة MyMMS




Thumbs up لدالة في دلفي لمعرفة ip للجهاز الذي تستخدمه عندما تتصل بالانترنت








بسم الله الرحمن الرحيم
والسلام عليكماليوم معي دالة لمعرفة:ip للجهاز الذي تستخدمه عندما تتصل بالانترنت


للحصول على IP للجهاز الذي تستخدمه عندما تتصل بالانترنت يجب أ ن نستدعي بعض التوابع API الموجودة في الوحدة Winsock
سوف ننشأ تابع GetIPFromHost الذي سوف يستدعي عدد من توابع API للحصول على IP
ولكن قبل استخدام توابع WinSock functions يجب أن يكون عندنا جلسة (session)
يتم إنشاء هذه الجلسة (session) بالتابعWSAStartup وفي النهاية نستدعي التابعSACleanup لإنهاء استعمال مقابس ويندوزWindows (Sockets)
والاّن ضع زر وضع 2 Edit على الفورم وأنشىء التابع التالي GetIPFromHost في implementation

uses Winsock;
function GetIPFromHost
(var HostName, IPaddr, WSAErr: string): Boolean;
type
Name = array[0..100] of Char;
PName = ^Name;
var
HEnt: pHostEnt;
HName: PName;
WSAData: TWSAData;
i: Integer;
begin
Result := False;
if WSAStartup($0101, WSAData) <> 0 then begin
WSAErr := 'Winsock is not responding."';
Exit;
end;
IPaddr := '';
New(HName);
if GetHostName(HName^, SizeOf(Name)) = 0 then
begin
HostName := StrPas(HName^);
HEnt := GetHostByName(HName^);
for i := 0 to HEnt^.h_length - 1 do
IPaddr :=
Concat(IPaddr,
IntToStr(Ord(HEnt^.h_addr_list^[i])) + '.');
SetLength(IPaddr, Length(IPaddr) - 1);
Result := True;
end
Else
begin
case WSAGetLastError of
WSANOTINITIALISED:WSAErr:='WSANotInitialised';
WSAENETDOWN :WSAErr:='WSAENetDown';
WSAEINPROGRESS :WSAErr:='WSAEInProgress';
end;
end;
Dispose(HName);
WSACleanup;
end;

procedure TForm1.Button1Click(Sender: TObject);
var
Host, IP, Err: string;
begin
if GetIPFromHost(Host, IP, Err) then begin
Edit1.Text := Host;
Edit2.Text := IP;
end
else
MessageDlg(Err, mtError, [mbOk], 0);
end;

g]hgm td ]gtd gluvtm ip gg[ih. hg`d jsjo]li uk]lh jjwg fhghkjvkj





reputation



  رد مع اقتباس