C# 如何使用Mono在Linux中P/Invoke getaddrinfo
在尝试使用libc中的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
[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
相同的问题