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