关于一个API! 网络的!

dext 2002-10-16 07:55:02
请问用哪个API该本机的IP地址?
若有冲突,怎么判断?
两问……
1——51分
2——50分
...全文
34 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
Delphi_Li 2002-10-17
  • 打赏
  • 举报
回复
问题1
Function TNetwork.NameToIP( Const Name : String ) : String;
Var
WSAdata : TWSAData;
HostName : Array [ 0.. 255 ] Of Char;
HostEnt : PHostEnt;
Addr : PChar;
Begin
WSAStartup( $0101, WSAdata );
Try
StrPCopy( HostName, Name );
HostEnt := GetHostByName( HostName );
If Assigned( HostEnt ) Then
Begin
If Assigned( HostEnt^.h_addr_list ) Then
Begin
Addr := hostEnt^.h_addr_list^;
If Assigned( Addr ) Then Result := Format( '%d.%d.%d.%d', [ Byte( Addr[ 0 ] ),Byte( Addr[ 1 ] ),Byte(Addr[ 2 ] ),Byte(Addr[ 3 ] ) ] )
Else Result := '';
End
Else Result := '';
End
Else Result := '';
Finally
WSACleanup;
End;
End;

Function TNetwork.IPToName( Const IP : String ) : String;
Var
SockAddrIn : TSockAddrIn;
HostEnt : PHostEnt;
WSAData : TWSAData;
Begin
WSAStartup( $0101, WSAData );
Try
SockAddrIn.Sin_Addr.S_Addr := Inet_Addr( PChar( String( IP ) ) );
HostEnt := GetHostByAddr( @SockAddrIn.sin_addr.S_addr, 4, AF_INET );
If( HostEnt <> Nil ) Then Result := StrPas( HostEnt^.h_name )
Else Result := '';
Finally
WSACleanup;
End;
End;
问题2
Function TNetwork.GetRemoteMACAddress( DestIP : String ) : cString;
Type
TInfo = Array[ 0 .. 7 ] Of BYTE;
Var
IP : String;
dwTargetIP : DWORD;
dwMacAddress : Array [ 0 .. 1 ] Of DWORD;
dwMacLen : DWORD;
dwResult : DWORD;
X : TInfo;
Begin
Result := '??-??-??-??-??-??';
IP := DestIP;
dwTargetIP := Inet_Addr( PChar( IP ) );
dwMacLen := 6;
dwResult := SendARP( dwTargetIP, 0, @dwMacAddress[ 0 ], dwMacLen );
If dwResult = NO_ERROR Then
Begin
X := TInfo( dwMacAddress );
Result := Format( '%2.2x-%2.2x-%2.2x-%2.2x-%2.2x-%2.2x',
[ X[ 0 ], X[ 1 ], X[ 2 ], X[ 3 ], X[ 4 ], X[ 5 ] ] );
End;
End;

多次向指定IP发送的计算机发送ARP协议包,返回计算机的MAC地址,如果MAC不同,则说明IP地址有冲突!!!
dext 2002-10-17
  • 打赏
  • 举报
回复
谢谢 Delphi_Li(Delphi Li)
再详细点
z_hongbao 2002-10-17
  • 打赏
  • 举报
回复
gz
Liusp 2002-10-17
  • 打赏
  • 举报
回复
guanzhu
zhptj 2002-10-17
  • 打赏
  • 举报
回复
我有一个自己写的控件
可以得到自己的ip
你要的话留下信箱
black_fox 2002-10-17
  • 打赏
  • 举报
回复
winsock32
ly_liuyang 2002-10-17
  • 打赏
  • 举报
回复
你使用了什么Unit呀?没讲清楚

1,184

社区成员

发帖
与我相关
我的任务
社区描述
Delphi Windows SDK/API
社区管理员
  • Windows SDK/API社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧