1

我有一些代码片段,我通过 API 发送然后接收消息。

 //...
 struct msghdr msg = {0};
 //...
 // some other structures initialization

 msg.msg_name = &sa;
 msg.msg_namelen = sizeof sa; 
 msg.msg_iov = &iov;
 msg.msg_iovlen = 1;

 fd = socket(AF_NETLINK, SOCK_RAW, NETLINK_ROUTE);
 if(fd < 0) {
      perror("SOCKET");
      return -1; 
 }   

 if(sendmsg(fd, &msg, 0) < 0) {
      perror("SENDMSG");
      return -1; 
 }   

 iov.iov_base = buf;
 iov.iov_len = sizeof buf;

 /* Should I do this? 
 msg.msg_name = &sa;
 msg.msg_namelen = sizeof sa;
 msg.msg_iov = &iov;
 msg.msg_iovlen = 1;
 */

 int len = recvmsg(fd, &msg, 0);

所以问题是,我应该重新初始化msg成员吗?还是从API的角度保证sendmsg()不会破坏这些领域?不幸的是,我没有找到任何确认或否认。
很抱歉,如果很明显。

4

0 回答 0