بسم الله الرحمن الرحيم والسلام عليكماليوم معي دالة لمعرفة: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;
لا يمكنكم مشاهدة باقي المشاركات لأنك زائر ..
إذا كنت مشترك مسبقاً معنا .. فقم بتسجيل الدخول بعضويتك المُسجل بها
للمتابعة و إذا لم تكن كذلك فيمكنك تسجيل عضوية جديدة
مجاناً (
من هنا )
لا يمكنكم مشاهدة باقي المشاركات لأنك زائر ..
إذا كنت مشترك مسبقاً معنا .. فقم بتسجيل الدخول بعضويتك المُسجل بها
للمتابعة و إذا لم تكن كذلك فيمكنك تسجيل عضوية جديدة
مجاناً (
من هنا )