【问题标题】:UDT connection break during recvrecv 期间 UDT 连接中断
【发布时间】:2012-12-05 07:13:05
【问题描述】:

我的代码在 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);
}

我正在将 boost 套接字与 udt 套接字绑定。

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

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

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

【问题讨论】:

  • asio库does not原生支持UDT,你用的是哪个库?

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


【解决方案1】:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-11-17
    • 1970-01-01
    • 2020-05-31
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多