【问题标题】:How to use socket_t (socket reference) to get ip and port in Network Kernel Extension of Mac OS如何在 Mac OS 的网络内核扩展中使用 socket_t (socket reference) 获取 ip 和 port
【发布时间】:2018-02-21 09:06:29
【问题描述】:

我正在编写套接字过滤器,其中大多数用于套接字过滤的回调函数(struct sflt_filter)都有输入参数socket_t so,如下所示:

   errno_t ( *sf_bind_func)(
   void *cookie,
   socket_t so,
   const struct sockaddr *to);

需要从socket_t so获取端口和IP。 有没有人知道如何做到这一点?

【问题讨论】:

    标签: kernel-extension


    【解决方案1】:

    OSx 和iOS 内核编程一书中得到了解决方案。 函数sock_getsockname() 完成这项工作。找到以下代码sn -p:

        unsigned char addrStr[256];
        struct sockaddr_in addrLcl;
        sock_getsockname(so, (struct sockaddr *)&addrLcl, sizeof(addrLcl));
        inet_ntop(AF_INET, &addrLcl.sin_addr, (char *)addrStr, sizeof(addrStr));
        printf("SFWebSecBind() : <%s> Hex:<%X>", addrStr, ntohs(addrLcl.sin_port));
    

    【讨论】:

      猜你喜欢
      • 2018-01-14
      • 2018-02-18
      • 1970-01-01
      • 1970-01-01
      • 2020-05-02
      • 1970-01-01
      • 2019-02-12
      • 2018-11-12
      • 2018-04-26
      相关资源
      最近更新 更多