理解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
  • 所以serv_addr.sin_addr.s_addr包含所选主机的主机名和ip地址。
    是这样吗?
    (注: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(它更复杂)(在不久的将来):