请大家刚我翻译一段代码,我实在看不太懂,谢谢啦 100

我要做一个局域网查找IP和主机网络名的程序,现在这是其中一个很重要的模块,可是我看不懂,希望高手帮我翻译一下,谢谢啦。我可以追加给分。constCStringCGTNet... 我要做一个局域网查找IP和主机网络名的程序,现在这是其中一个很重要的模块,可是我看不懂,希望高手帮我翻译一下,谢谢啦。我可以追加给分。

const CString CGTNetwork::GetRemoteName(const LPNETRESOURCE lpNetRS)
{
CString str;

if ((lpNetRS != NULL) && IsServer(lpNetRS) && (lpNetRS->lpRemoteName != NULL))
{
str = lpNetRS->lpRemoteName;

if (0 == str.Left(2).Compare("\\\\"))
str.Delete(0, 2);
}

return str;
}

const CString CGTNetwork::GetRemoteIP(const LPNETRESOURCE lpNetRS)
{
CString strName, strIP;
LPHOSTENT host = NULL;
in_addr * ptr = NULL;

strName = lpNetRS->lpRemoteName;

if (0 == strName.Left(2).Compare("\\\\"))
strName.Delete(0, 2);

host = gethostbyname(strName);

if (host == NULL)
{
TRACE0("\n\r gethostbyname func fail");
return strIP;
}

ptr = (in_addr *)host->h_addr_list[0];

if (ptr == NULL)
return strIP;

int a = ptr->S_un.S_un_b.s_b1;
int b = ptr->S_un.S_un_b.s_b2;
int c = ptr->S_un.S_un_b.s_b3;
int d = ptr->S_un.S_un_b.s_b4;

strIP.Format("%d.%d.%d.%d", a, b, c, d);

return strIP;
}
展开
 我来答
L_o_o_n_i_e
2008-06-12 · TA获得超过4.2万个赞
知道大有可为答主
回答量:8507
采纳率:38%
帮助的人:6041万
展开全部
GetRemoteName 得到域名. 域名取自 LPNETRESOURCE 数据(结构) 成员 lpRemoteName:
str = lpNetRS->lpRemoteName;

第二个,GetRemoteIP,是得到IP。
它的前面部分与GetRemoteName一样,先得到域名:
strName = lpNetRS->lpRemoteName;
再用 gethostbyname()函数,从域名取得 IP 信息:
host = gethostbyname(strName);
host 也是 数据(结构)。
它的成员 host->h_addr_list[0] 是字符串,里面含 4段 IP 数据。
转换到 in_addr 数据(结构):
ptr = (in_addr *)host->h_addr_list[0];

in_addr 结构:
typedef struct in_addr {
union {
struct{
unsigned char s_b1,
s_b2,
s_b3,
s_b4;
} S_un_b;
struct {
unsigned short s_w1,
s_w2;
} S_un_w;
unsigned long S_addr;
} S_un;
} IN_ADDR;

取出4段IP数值,对照上面结构,就懂下面表达式的意思了。
(又是指针,又是union,又是成员!)
int a = ptr->S_un.S_un_b.s_b1;
int b = ptr->S_un.S_un_b.s_b2;
int c = ptr->S_un.S_un_b.s_b3;
int d = ptr->S_un.S_un_b.s_b4;
百度网友06bebf5
2008-06-11 · TA获得超过358个赞
知道小有建树答主
回答量:461
采纳率:0%
帮助的人:380万
展开全部
你是网上下的程序,自己看不懂?
第一个方法是得到域名,第二个是得到域内IP.
LPNETRESOURCE这些都是数据类型。你可以到google上去查它们是干什么的。
总之你把上面看不懂的代码挨个到google上搜就对了。
我想自己的问题自己解决是最好的
你说呢?
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式