C# 如何使用Mono在Linux中P/Invoke getaddrinfo

C# 如何使用Mono在Linux中P/Invoke getaddrinfo,c#,linux,mono,C#,Linux,Mono,在尝试使用libc中的getaddrinfo时,我遇到了结构和链表方面的问题,如下所示: [DllImport("libc.so.6")] private static extern int getaddrinfo(string node, string service, addrinfo hints, addrinfo res); 如何在addrinfo中创建缺少的addrinfo(和sockaddr

在尝试使用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
需要释放)

但是,可以使用一次性包装器(适配器模式)来完成,但很可能会导致与问题中链接的帖子所述的
Dns.GetHostEntry
相同的问题