在recv期间UDT连接中断

时间:2012-12-05 07:13:06

标签: boost udp boost-asio udp-data-transfer

我的代码在windows中工作正常,但是当我在mac中编译并运行它时,连接在recv期间中断。

我使用UDT RENDEZVOUS模式进行连接,效果很好

bool rendezvous = true;
UDT::setsockopt(serv, 0, UDT_RENDEZVOUS, &rendezvous, sizeof(bool));
UDT::bind(serv,socket_.native());

if (UDT::ERROR == UDT::connect(serv, (sockaddr*)&serv_addr, sizeof(serv_addr)))
{
std::cout << UDT::getsockstate(serv);
}

我用udt socket绑定一个boost套接字。

这里我的连接中断,错误说,套接字关闭,不存在

if (UDT::ERROR == (rs = UDT::recv(serv, data_read_TCP_Style.retdata() + rsize, size - rsize , 0)))
{
cout << "recv:" << UDT::getlasterror().getErrorMessage() << endl;
}

为什么连接只在recv期间中断?什么可能影响连接?

1 个答案:

答案 0 :(得分:-1)

设置rendezvous = false,也许可以解决这个问题。