ip地址问题与指针问题双剑合并,挑战delphi问题极限(100分)

  • 主题发起人 主题发起人 Gec
  • 开始时间 开始时间
G

Gec

Unregistered / Unconfirmed
GUEST, unregistred user!
type
TSocketArmorData = record
hSocketArmorWnd: HWND;
uMsg: Cardinal;
uMsgAccept: Cardinal;
szProcessName: array[0..511] of Char;
nFlags: Integer;
addr: TSockAddrIn;
buff: array[0..63 * 1024] of Char;
len: Integer;
end;
//类声明,包含addr
var
pSocketArmorData: ^TSocketArmorData;
end;

richedit1.lines.add('Remote Ip: ' + inet_ntoa(pinaddr(psocketarmordata.addr.sin_addr)^));
richedit1.lines.add('Remote Ip: ' + inet_ntoa(pinaddr(psocketarmordata^.addr.sin_addr)));
richedit1.lines.add('Remote Ip: ' + inet_ntoa(psocketarmordata.addr.sin_addr)^));
richedit1.lines.add('Remote Ip: ' + inet_ntoa(psocketarmordata^.addr.sin_addr));
以上做法均得到错误ip地址,好象把错误数据传递给了inet_ntoa
 
richedit1.lines.add('Remote Ip: ' + inet_ntoa(psocketarmordata^.addr.sin_addr));
 
正常,因为你传递了一个错误的IP地址
192.168.0.155 对应为
C0 A8 00 9B
你传递地址应该倒序,这样:
9b00a8c0
否则,c0a8009b的结果是:155.0.168.192
 
richedit1.lines.add('Remote Ip: ' + inet_ntoa(psocketarmordata^.addr.sin_addr.s_addr));
 
richedit1.lines.add('Remote Ip: ' + strpas(inet_ntoa(psocketarmordata^.addr.sin_addr)));
 
接受答案了.
 
后退
顶部