c - 在 C 中使用 getaddrinfo() 的 Unix 套接字

标签 c sockets getaddrinfo

有谁知道是否可以在 C (AF_UNIX) 中将 getaddrinfo 与 unix 套接字一起使用。我已经尝试了几件事,但我无法让它发挥作用。 这基本上就是我正在尝试的:

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 地址没有解析步骤 - 套接字名称​​是套接字地址。

关于c - 在 C 中使用 getaddrinfo() 的 Unix 套接字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6893477/

相关文章:

c - scanf() 函数没有保持屏幕供用户输入数据

c - 将文件中的值添加到数组直到某个字符

c++ - WSAPoll 更改 FDSET 中的数据并由于 WSAENOTSOCK 返回错误。我正确使用 WSAPoll() 吗?

javascript - Node.js:即使将 allowHalfOpen 设置为 True,客户端也会与服务器断开连接

C - getaddrinfo 返回 "Servname not supported for ai_socktype"

c - 汇编 intel x86 结构,并接收结构作为参数

sockets - 在winsock中检索套接字的协议(protocol)

java - 关于 socket.startHandshake();在 java

ruby-on-rails-3.1 - .rvm/rubies/ruby-1.9.2-p320/lib/ruby/1.9.1/net/http.rb:644:in `initialize': 没有这样的文件或目录 - getaddrinfo (Errno::ENOENT)

c - 使用 getaddrinfo 将 IPv4 地址转换为 IPv6 地址时丢失服务端口