织梦CMS - 轻松建站从此开始!

罗索

当前位置: 主页>杂项技术>PC常识>

在InstallShield中引用WINSOCK 的示例

罗索客 发布于 2004-02-16 15:07 点击:次 
/* written by Jaron ,2002-07-15 */ /* 原出处:江都资讯网论坛 http://www.jiangdu.net/bbs ;*/ /* 转载请注明出处和保留此版权信息 */ /* 欢迎使用SiteManager网站管理系统 http://sitemanager.cnzone.net ; */ 通过以下示例,InstallShield可以用WINSOCK获取IP地址
TAG:

/* written by Jaron ,2002-07-15 */
/* 原出处:江都资讯网论坛 http://www.jiangdu.net/bbs ;*/
/* 转载请注明出处和保留此版权信息 */
/* 欢迎使用SiteManager网站管理系统 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; (Jaron)
本站文章除注明转载外,均为本站原创或编译欢迎任何形式的转载,但请务必注明出处,尊重他人劳动,同学习共成长。转载请注明:文章转载自:罗索实验室 [http://www.rosoo.net/a/200402/2396.html]
本文出处: 作者:Jaron
顶一下
(0)
0%
踩一下
(0)
0%
------分隔线----------------------------
发表评论
请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。
评价:
表情:
用户名: 验证码:点击我更换图片
栏目列表
将本文分享到微信
织梦二维码生成器
推荐内容