我有两个变量:buf
和length
(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/