我正在编写Socket过滤器,其中大多数套接字过滤回调函数(startDragDistance()
)都有输入参数struct sflt_filter
,如下所示:
socket_t so
需要从 errno_t ( *sf_bind_func)(
void *cookie,
socket_t so,
const struct sockaddr *to);
获取端口和IP。
有人知道如何做到这一点吗?
答案 0 :(得分:1)
获得 OSx和iOS内核编程预订的解决方案。
函数sock_getsockname()
完成工作。查找以下代码段:
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));