this slowpoke moves

Get Port & IP from SocketHandle

uses Winsock

//

function ConnectToHost (Host : pchar; Port : Integer) : TSocket;
var
  Addr                  : sockaddr_in;
begin
  Addr.sin_family       := AF_INET;
  Addr.sin_port         := htons(Port);
  result                := Socket(AF_INET, 1, 6);
  Addr.sin_addr.S_addr  := INET_ADDR(Host);
  if not( (Connect(result, Addr, SizeOf(Addr)) = 0) ) then result := 0;
end;


function GetLocalSocketPort ( s : TSocket ) : Integer;
var
  Addr                  : TSockAddrIn;
  Size: integer;
begin
  Size := sizeof(Addr);
  getsockname(s, Addr, Size);
  Result := ntohs(Addr.sin_port);
end;

function GetLocalSocketAddress ( s : TSocket ) : String;
var
  Addr                  : TSockAddrIn;
  Size: integer;
begin
  Size := sizeof(Addr);
  getsockname(s, Addr, Size);
  Result := inet_ntoa(Addr.sin_addr);
end;


function GetRemoteSocketPort ( s : TSocket ) : Integer;
var
  Addr                  : TSockAddrIn;
  Size: integer;
begin
  Size := sizeof(Addr);
  getpeername(s, Addr, Size);
  Result := ntohs(Addr.sin_port);
end;

function GetRemoteSocketAddress ( s : TSocket ) : String;
var
  Addr                  : TSockAddrIn;
  Size: integer;
begin
  Size := sizeof(Addr);
  getpeername(s, Addr, Size);
  Result := inet_ntoa(Addr.sin_addr);
end;
Beispiel :
procedure TForm1.Button1Click(Sender: TObject);
var MySocket : TSocket;
begin
  //MySocket := ConnectToHost ('95.91.209.152', 0);

  Label1.Caption := IntToStr( GetLocalSocketPort(00080) );
  Label1.Caption := GetLocalSocketAddress(00080);
  Label1.Caption := IntToStr(GetRemoteSocketPort(00080));
  Label1.Caption := GetRemoteSocketAddress(00080);
end;

Keine Kommentare:

Kommentar veröffentlichen

Beliebte Posts

Translate