如何使用 Mono P/Invoke 在 Linux 中获取地址信息
How to P/Invoke getaddrinfo in Linux using Mono
我在尝试使用 libc 中的 getaddrinfo 时遇到结构和链表问题,如下所示:
[DllImport("libc.so.6")]
private static extern int getaddrinfo(string node, string service,
addrinfo hints,
addrinfo res);
如何让缺失的addrinfo
(和addrinfo
里面的sockaddr
)。 addrinfo
顺便说一下是一个链表。我猜我必须 [MarshalAs]
但我不知道该怎么做。
如果您正在考虑建议 Dns.GetHostEntry
,请查看 。这就是我计划从 libc.
调用 getaddrinfo
的原因
回答我自己的问题。
简短的回答是“不要这样做!” :-)
原因是getaddrinfo
在堆上创建了一个链表(res
指针)并且需要释放。
然而,它可以通过一次性包装(适配器模式)来完成,但它最有可能导致与问题中链接的 post 中描述的 Dns.GetHostEntry
相同的问题。
我在尝试使用 libc 中的 getaddrinfo 时遇到结构和链表问题,如下所示:
[DllImport("libc.so.6")]
private static extern int getaddrinfo(string node, string service,
addrinfo hints,
addrinfo res);
如何让缺失的addrinfo
(和addrinfo
里面的sockaddr
)。 addrinfo
顺便说一下是一个链表。我猜我必须 [MarshalAs]
但我不知道该怎么做。
如果您正在考虑建议 Dns.GetHostEntry
,请查看
getaddrinfo
的原因
回答我自己的问题。
简短的回答是“不要这样做!” :-)
原因是getaddrinfo
在堆上创建了一个链表(res
指针)并且需要释放。
然而,它可以通过一次性包装(适配器模式)来完成,但它最有可能导致与问题中链接的 post 中描述的 Dns.GetHostEntry
相同的问题。