您好我正在尝试重现addressFamily Exception
std::auto_ptr<UdpSocket> s_StatusSocket;
//.......
//.......
try
{
s_StatusSocket->send(&f.addr, reqBuf, reqLen);
}
catch (const SystemException& se)
{
string exceptionMessage=se.what();
if(exceptionMessage.find("ddress family"))
{
//Finally THrown
}
}
因为我正在使用iptables阻止IP,
iptables -A INPUT -s 10.10.0.1 -j DROP
service iptables save
这样做不会在发送块上抛出异常,请告诉我如何重现Linux中不支持的地址族
答案 0 :(得分:1)
编译没有IPv6的内核。或使用其他不受支持的地址系列。
你不能使用iptables - 这与支持哪些地址系列完全无关。当您致电socket(2)
时,您需要实际传入一个不受支持的地址。另请注意,如果您阅读send()
的手册页,您会发现它不会返回EAFNOSUPPORT
!您误读了文档 - EAFNOSUPPORT
,socket(2)
和connect(2)
返回了socketpair(2)
错误。
答案 1 :(得分:0)