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

setsockopt问题
#define IP_RECORD_ROUTE 0x07

  IpOptionHeader ipopt;
  ipopt.code=IP_RECORD_ROUTE;
  ipopt.ptr=4;
  ipopt.len=39;
  
if(setsockopt(socketfd,IPPROTO_IP,IP_OPTIONS,(char*)&ipopt,sizeof(ipopt))==-1)
  {
  perror("setsockopt IP_OPTIONS");
  return;
  }
错误提示:setsockopt IP_OPTIONS: Invalid argument;不知是什么原因。


------解决方案--------------------
米这玩意吧
man一下setsockopt 看看有没有IP_OPTIONS
------解决方案--------------------
int setsockopt( int s,
int level,
int optname, 
const void * optval,
socklen_t optlen );

optname可选下面的,没有你说的IP_OPTIONS

IP_HDRINCL · IP_TOS · SO_BINDTODEVICE · SO_BROADCAST · SO_DEBUG · SO_DONTROUTE · SO_ERROR · SO_KEEPALIVE · SO_LINGER · SO_OOBINLINE · SO_RCVBUF · SO_SNDBUF · SO_RCVLOWAT · SO_RCVTIMEO · SO_REUSEADDR · SO_REUSEPORT · SO_SNDLOWAT · SO_SNDTIMEO · SO_TIMESTAMP · SO_TYPE · SO_USELOOPBACK · TCP_KEEPALIVE · TCP_NODELAY
------解决方案--------------------
你这个应该有问题的啊 那个结构体里 没IP这个啊
------解决方案--------------------
使用 man setsockopt 找到标准用法