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

时间:2012-11-14 14:10:17

标签: c networking tcp dns udp

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

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

1 个答案:

答案 0 :(得分:0)

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

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

这是有效的,因为在使用套接字时,通常不会获得协议头,只需要UDP / TCP有效负载。