Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/variables/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 有没有办法让Dns.GetHostEntry()在C语言中被迫使用TCP而不是UDP?_C#_Tcp_Dns - Fatal编程技术网

C# 有没有办法让Dns.GetHostEntry()在C语言中被迫使用TCP而不是UDP?

C# 有没有办法让Dns.GetHostEntry()在C语言中被迫使用TCP而不是UDP?,c#,tcp,dns,C#,Tcp,Dns,使用wireshark测试Dns.GetHostEntry()时,它似乎使用UDP,这很有意义,因为响应小于512字节。 我知道如果响应大于512字节,它会返回到TCP,但我想知道是否有一种方法可以让它使用TCP,即使它小于512字节,因为我想通过TCP测试分辨率?您可能需要查看源()。我不确定,但我不认为最初的调用是UDP/TCP。这是DNS协议。因此,使用了为DNS协议指定的RFC。DNS可能正在调用TCP/UDP。我必须做研究和阅读DNS RFC才能确定。就像你能做的那样。请参阅示例代码:

使用wireshark测试Dns.GetHostEntry()时,它似乎使用UDP,这很有意义,因为响应小于512字节。
我知道如果响应大于512字节,它会返回到TCP,但我想知道是否有一种方法可以让它使用TCP,即使它小于512字节,因为我想通过TCP测试分辨率?

您可能需要查看源()。我不确定,但我不认为最初的调用是UDP/TCP。这是DNS协议。因此,使用了为DNS协议指定的RFC。DNS可能正在调用TCP/UDP。我必须做研究和阅读DNS RFC才能确定。就像你能做的那样。请参阅示例代码:您可以使用如下选项:var result=client.ResolveServiceAsync(“example.com”、“ldap”、System.Net.Sockets.ProtocolType.Tcp);请参阅Wiki:DNS是使用TCP或UDP的应用程序类。您可以设置一个类属性。C#Net库是受管理的,Microsoft限制了您可以在IP头中设置的参数。所以在c#中,更改IP消息属性很困难。所以你可以写一个C++包装器。或者使用windows dll ws2_32.dll。有关更多详细信息,请参见pinvoke: