当前位置: 技术问答>linux和unix
setsockopt问题
来源: 互联网 发布时间:2016-08-21
本文导语: #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; ...
#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;不知是什么原因。
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
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
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 找到标准用法