TCP监听与获取本机IP会冲突?请大家指教。

aus 2009-03-26 11:21:14
我在程序的主窗体里面获取本机IP,并且用tidtcpserver监听本地的9091端口,结果获取本机Ip的代码如果放在开启监听之前,会报错:cannot allocate socket,如果获取本机IP的代码放在开启监听之后,不会报错,但是接收不到发送到9091的信息。
Delphi7,Indy9.0
获取本机Ip的代码是:
function GetLocalIP: String;
type
TaPInAddr = array [0..10] of PInAddr;
PaPInAddr = ^TaPInAddr;
var
i: Integer;
WSADATA: TWSADATA;
Buffer: array [0..63] of Char;
HostEnt: PHostEnt;
pptr: PaPInAddr;
begin
//获取本机IP
WSAStartup($101, WSADATA);
gethostname(Buffer, Sizeof(Buffer));
HostEnt := gethostbyname(Buffer);
if Assigned(HostEnt) then
begin
pptr := PaPInAddr(HostEnt^.h_address_list);
i := 0;
while Assigned(pptr^[i]) do
begin
Result := StrPas(inet_ntoa(pptr^[i]^));
Inc(i);
end;
end;
WSACleanup;
end;
请大家指教。
...全文
81 1 打赏 收藏 转发到动态 举报
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
jadeluo 2009-03-26
  • 打赏
  • 举报
回复
1. 测试了一下, 没发现楼主所说的问题
2. HostEnt^.h_address_list估计是笔误, 应该是HostEnt^.h_addr_list

1,593

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 网络通信/分布式开发
社区管理员
  • 网络通信/分布式开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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