请问如何才能从一个TSocket对象来获得该连接的目标IP地址和端口? ( 积分: 50 )

  • 主题发起人 主题发起人 anick
  • 开始时间 开始时间
A

anick

Unregistered / Unconfirmed
GUEST, unregistred user!
如题,我对TSocket对象不了解,说是整形,但不知道这个是不是该连接的句柄
另外还有一个buf是收到的内容,我想应该可以从这两个对象中获得IP和端口的
但是就是不知道用什么函数,该如何转换一下,望知道的朋友赐教一下,当然越详细越好!
 
如题,我对TSocket对象不了解,说是整形,但不知道这个是不是该连接的句柄
另外还有一个buf是收到的内容,我想应该可以从这两个对象中获得IP和端口的
但是就是不知道用什么函数,该如何转换一下,望知道的朋友赐教一下,当然越详细越好!
 
我晕,怎么没人来知道吗?
 
Socket.RemoteAddress
Socket.RemotePort
 
不会,不过帮助是这样说的

Unit

Winsock

type
u_int = Integer;
TSocket = u_int;

Description

TSocket represents a Windows socket handle. TSocket values are used by TCustomWinSocket and its descendants for working directly with the Windows socket APIs. Use this type when using the Windows socket APIs directly in an application.
 
楼上的说得对,看了一下帮助,确实是一个socket的句柄,就是不知道利用什么API函数来根据返回这个socket的地址,郁闷啊
 
楼主,怎么还没结贴勒
 
给你一个过程:
function GetLocalIP(var LocalIp: string): Boolean;
var
HostEnt: PHostEnt;
IpStr: string;
addr: pchar;
Buffer: array [0..63] of char;
GInitData: TWSADATA;
begin
Result := False;
try
WSAStartup(2, GInitData);
GetHostName(Buffer, SizeOf(Buffer));
HostEnt := GetHostByName(buffer);
if HostEnt = nil then Exit;
addr := HostEnt^.h_addr_list^;
IpStr := Format('%d.%d.%d.%d', [byte(addr [0]),
byte (addr [1]), byte (addr [2]), byte (addr [3])]);
LocalIp := IpStr;
Result := True;
finally
WSACleanup;
end;
end;
 
接受答案了.
 
后退
顶部