理解C套接字指令
这是一个我还没有完全理解的说法理解C套接字指令,c,sockets,struct,C,Sockets,Struct,这是一个我还没有完全理解的说法 serv_addr.sin_addr.s_addr = ((struct in_addr*)(hp->h_addr)) -> s_addr; 这是否意味着: 我将hp放入h\u addr hp->h\u addr 所有这些都已复制到s\u addr 所以serv_addr.sin_addr.s_addr包含所选主机的主机名和ip地址。是这样吗? (注:hp是struct hostent*hp;hp=gethostbyname(argv[1]);)您
serv_addr.sin_addr.s_addr = ((struct in_addr*)(hp->h_addr)) -> s_addr;
这是否意味着:hp
放入h\u addr
hp->h\u addr
s\u addr
是这样吗?
(注:hp是
struct hostent*hp;hp=gethostbyname(argv[1]);
)您需要理解
本质上,当您有指向某个结构的指针时,它允许您访问该结构的成员
因此,hp->h_addr
允许您访问hp
指向的hostent
结构的h_addr
成员。然后,将该成员强制转换为\u addr*中的,并取消对该成员的引用,以便可以访问\u addr
结构中的s\u addr
成员。您需要了解
本质上,当您有指向某个结构的指针时,它允许您访问该结构的成员
因此,hp->h_addr
允许您访问hp
指向的hostent
结构的h_addr
成员。然后,您将该成员强制转换为\u addr*
中的,并取消对该成员的引用,以便可以访问\u addr
结构中的s\u addr
成员。(1)是错误的hp->h_addr
是(*hp)的缩写。h_addr
。这是一个取消引用加上一个成员选择
在英语中,有人可能会说“将hp的h_addr
复制到serv_addr
的s_addr
。这需要强制转换。”(1)是错误的hp->h_addr
是(*hp)的缩写。h_addr
。这是一个取消引用加上一个成员选择
在英语中,有人可能会说:“复制<代码> HP<代码> HyAdDR< <代码>到<代码> Serv.ADDR <代码> SyAdDR 。这是一个强制转换。“ <代码> GeToStByNyMe())/代码>被禁止,您可以考虑使用<代码> GATADLIN()/<代码>。我知道,我已经读过了,但是我需要一个简单的实现,所以我将学习GETADRDIONFION。(更复杂)在(不久的将来):“代码> GeToStByNyMe())/代码>被禁止,您可以考虑使用<代码> GETADDIN()/<代码>。我知道,我已经读过这个,但是我需要一个简单的实现,所以我将研究GADADRIVENFO(它更复杂)(在不久的将来):