C 将 udp dns 消息更改为 tcp 并返回

标签 c networking tcp dns udp

我有两个变量:buflength(char buf[BUFSIZE], int length)。 Buf 包含使用 UDP 协议(protocol)发送的 DNS 消息,length 中包含该消息的长度。现在我需要更改 buf,以便我可以将它与 TCP 协议(protocol)一起使用并将其发送到 DNS 服务器并获取响应,然后该响应将更改回 UDP 协议(protocol)。

我知道我应该添加一些字节,然后删除一些字节,但我真的不知道是哪一个。所以请帮忙,也请用 C 显示它。

最佳答案

您需要打开第二个 SOCK_STREAM 类型的套接字,然后使用 send() 发送 buf 的内容:

sock = socket( AF_INET, SOCK_STREAM, 0 );
connect(...);
send( sock, buf, length, 0 );

这是可行的,因为在使用套接字时,您通常不会获得协议(protocol) header ,而只会获得 UDP/TCP 有效负载。

关于C 将 udp dns 消息更改为 tcp 并返回,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13380427/

相关文章:

用于生成 winexe 的 c 编译器命令

c - "Press Any Key to Continue"C 函数

java - Android 自动调用检查互联网连接

Java图像发送网络

postgresql - 如何在启用 TLS 配置的情况下连接到 Traefik TCP 服务?

c++ - 解码字符数组

c++ - 是否有可能有 'times out' 的源代码(在某个时刻后变得无效)?

swift - 在 Playground 或项目外快速联网?

node.js - 如何在 Node.js TCP 服务器中追踪 ECONNREFUSED?

c++ - localhost 套接字是否需要任何类型的 keepalive?