我可以同时使用SO_REUSEADDR和SO_EXCLUSIVEADDRUSE选项吗?

时间:2019-02-14 02:12:21

标签: c++

我开始服务器编程。     我有一个问题...     我尝试使一台设备成为多台服务器     所以我对“地址已被使用”问题使用了reuse_addr选项。     但是我想在两个服务器使用相同的地址和相同的端口时显示错误     所以我尝试使用SO_EXCLUSIVEADDRUSE选项     但它返回-1 ..     我应该怎么做

io_service svc;
tcp::acceptor a(svc);

boost::system::error_code ec;
int one = 1;
a.open(tcp::v4(), ec);

a.set_option(tcp::acceptor::reuse_address(true), ec);
int eb = setsockopt(a.native_handle(), SOL_SOCKET, SO_EXCLUSIVEADDRUSE,
        (char*)&optval, sizeof(optval));

if (eb < 0) {
        std::cout << "errorcode : " << eb;
        return true; }

a.bind({ tcp::v4(), port }, ec);
if (ec != 0)
{
    std::cout << "Port " << 44000 << " is in use\n";
    return true;
}

0 个答案:

没有答案