日期:2014-05-16  浏览次数:20812 次

netlink,中用户使用sendto有什么意义
在看使用netlink获取路由表时,在recvmsg()前,调用了sendto(),给内核发送信息不会设置什么,看不到什么效果,而且还有一个struct rtgenmsg,这个结构体,请问有什么用啊?

相关的代码如下:
struct 

struct nlmsghdr nlh; 
struct rtgenmsg g; 
}req; 

  sendsize=sendto(sockfd,(void*)&req,sizeof(req),0, (struct sockaddr*)&nladdr,sizeof(nladdr))
这段代码有什么作用?
struct rtgenmsg,这个结构体,请问有什么用?



------解决方案--------------------
  int sendto ( int s , const void * msg, int len, unsigned int flags, const 
  struct sockaddr * to , int tolen ) ;
  函数说明 
  sendto() 用来将数据由指定的socket传给对方主机。参数s为已建好连线的socket,如果利用UDP协议则不需经过连线操作。参数msg指向欲连线的数据内容,参数flags 一般设0,详细描述请参考send()。参数to用来指定欲传送的网络地址,结构sockaddr请参考bind()。参数tolen为sockaddr的结果长度。
  返回值 
  成功则返回实际传送出去的字符数,失败返回-1,错误原因存于errno 中。
_______________________________________

你看前面req是如何初始化的,结合前后流程就能猜出这个sendto的含义了。rtgenmsg应该是存储要发送的消息内容。