[英]Unix sockets with getaddrinfo() in C
有谁知道是否可以在C(AF_UNIX)中的unix套接字上使用getaddrinfo。 我已经尝试了一些方法,但是无法使其正常工作。 这基本上是我正在尝试的:
struct addrinfo hints, *res;
memset(&hints, 0, sizeof(hints));
hints.ai_family = AF_UNIX;
hints.ai_socktype = SOCK_STREAM;
if(getaddrinfo("What should I put here?", "What should I put here?", &hints, &res) != 0){
//do sth about
}
我的问题是,如何在unix套接字中使用它,如何填充节点和服务字段。
提前致谢。
getaddrinfo()
某些实现支持AF_UNIX
套接字地址,但是出于安全考虑,它们不再支持。
无论如何,您实际上并不需要一个函数来“查找” AF_UNIX
地址-如果您知道套接字路径,则可以将其直接复制到足够大小的sockaddr_un
中。 AF_UNIX
地址没有解析步骤-套接字名称是套接字地址。
很晚了,但是只是为了记录,您是否尝试过-struct addrinfo提示,* res;
memset(&hints, 0, sizeof(hints));
hints.ai_family = AF_UNSPEC; //is the address family(IPV4 or 6) or UNSPEC for either
hints.ai_socktype = SOCK_STREAM;
if(getaddrinfo(parm1, parm2, &hints, &res) != 0){
//do sth about
}
parm1->是要连接的主机名或地址。 在此处使用NULL进行的调用将放置本地主机的地址,在这种情况下,您将指定hints.ai_flags = AI_PASSIVE。 parm2->是预期服务的名称(http,ftp等)或套接字用于该服务的相应端口号
hints参数指定首选的套接字类型或协议。 NULL提示表明任何网络地址或协议都是可接受的。 如果此参数不为NULL,则指向一个addrinfo结构,该结构的ai_family,ai_socktype和ai_protocol成员指定首选的套接字类型。 ai_family中的AF_UNSPEC指定任何协议家族(例如IPv4或IPv6)。 ai_socktype或ai_protocol中的0指定也可以接受任何套接字类型或协议。 ai_flags成员指定其他选项,定义如下。 通过对它们进行逻辑或运算来指定多个标志。 hints参数中的所有其他成员必须包含0或空指针。
因此,看起来您需要传递hints
参数来告诉您您想要一个Unix套接字。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.