【问题标题】:in socket programming,int inet_pton(int af, const char *src, void *dst);在套接字编程中,int inet_pton(int af, const char *src, void *dst);
【发布时间】:2017-09-11 14:01:18
【问题描述】:

在套接字编程中,

int inet_pton(int af, const char *src, void *dst);

在这个函数中,为什么目标地址是 void 类型的指针。为什么不是 int 或 char 指针? 以及如何处理这个 void 类型指针。 我是这样访问的,对吗

void *buf;
int a;
inet_pton(AF_INET,ip,buf);
printf("%s",(char*)buf);

【问题讨论】:

标签: sockets pointers


【解决方案1】:

此函数将网络地址的文本表示转换为 IPv4 或 IPv6 二进制地址,以便 dst 指向 in_addrin6_addr

这是为了支持应用程序中的网络层可以通用并同时处理 IPv4 和 IPv6 协议的范例。这样的应用程序会将网络地址与地址族一起存储在一个大小足以容纳in_addrin6_addr 的存储空间中,例如:

struct generic_in_addr
{
    int af;
    union {
        in_addr v4;
        in6_addr v6;
    } addr;
};

并且将使用相同的多协议函数,例如socketconnectaccept,传递网络地址及其家族和大小。

C 中的通用网络编程。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多