在InstallShield中引用WINSOCK 的示例 (转)

在InstallShield中引用WINSOCK 的示例 (转)[@more@]/* written by Jaron ,2002-08-15 */
/* 转载请注明出处和保留此版权信息 */
/* 欢迎使用SiteManager网站管理 系统  .NET /" target=_blank>http://sitemanager.cnzone.net ; */

通过以下示例,InstallShield可以用WINSOCK获取IP地址,可将以下文件保存为tcpip.rul

#define WSADESCRIPTION_LEN 256
#define WSASYS_STATUS_LEN 128

typedef
 WSAData
 begin
 INT wVersion;
 INT wHighVersion;
 char szDescription[WSADESCRIPTION_LEN+1];
 char szSystemStatus[WSASYS_STATUS_LEN+1];
 short iMaxSockets;
 short iMaxUdpDg;
 POINTER lpVendorInfo;
end;
WSAData structWSAData;
WSAData POINTER pWSAData;

typedef HostEnt
begin
 POINTER ph_name; 
 POINTER ph_aliases; 
 short h_addrtype; 
 short h_length;
 POINTER ph_addr_list;
end;
HostEnt structHostEnt;
HostEnt POINTER pHostEnt;
SHORT nlen;
NUMBER nIPNetAddr;

NUMBER nVersion;
STRING szMsg;
STRING szDefault;
STRING szURL;
STRING szPath;
NUMBER nRC;
NUMBER nRC2;
STRING szHostName;
STRING szMYIPAddr;
POINTER pWinSockReturn;

typedef IPName
 begin
 STRING szIPAddr[100];
end;
IPName LocalIPName;
IPName POINTER pLocalIPName;

typedef IPAddrList
 begin
 POINTER pIPAddr;
end;
IPAddrList structIPAddrList;
IPAddrList POINTER pIPAddrList;


typedef IPAddPtr
 begin
 LONG nIPAddr;
end;
IPAddPtr structIPAddPtr;
IPAddPtr POINTER pIPAddPtr;

POINTER pIN_Addr_Struct;


prototype POINTER wsock32.gethostbyname(BYREF STRING);
prototype POINTER wsock32.gethostname(BYREF STRING, NUMBER);
prototype POINTER wsock32.WSAStartup(INT, POINTER);
prototype POINTER wsock32.inet_ntoa( NUMBER);


prototype POINTER wsock32.WSACleanup();
prototype int wsock32.WSAGetLastError ( );


 program
pWSAData = &structWSAData;

nRC = UseDLL ("wsock32.dll");
pWSAData -> wHighVersion = 1;
pWSAData -> wVersion = 1;
nVersion = 0x02000002; // 0x01000001

pWinSockReturn = WSAStartup(nVersion, pWSAData);
pWinSockReturn = gethostname(szHostName,100);
pHostEnt = gethostbyname(szHostName);


 nlen = pHostEnt -> h_length; 
 pIPAddPtr = pHostEnt -> ph_addr_list;

pIPAddPtr = *pIPAddPtr;
nIPNetAddr = *pIPAddPtr;

// nIPNetAddr = pIPAddPtr -> nIPAddr;


pLocalIPName = inet_ntoa( nIPNetAddr );
szMYIPAddr = pLocalIPName -> szIPAddr;

MessageBox(szMYIPAddr, INFORMATION);

WSACleanup();


exit;


来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/10752019/viewspace-984522/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/10752019/viewspace-984522/

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值