默认
发表评论 2
想开发IM:买成品怕坑?租第3方怕贵?找开源自已撸?尽量别走弯路了... 找站长给点建议
求助Android O上网络通信socket recv 的长度为0的异常的问题
阅读(29258) | 评论(2 收藏 淘帖
Android O上socket recv 的长度为0, 但是没有收到来自对端的FIN
bool checkSocketErrorNeedContinue(int count) {
    if (count > 0) {
        // recv message ok
        return true;
    } else if (count <= 0 && (errno == EAGAIN || errno == EWOULDBLOCK || errno == EINTR)) {
        // ingore some error as above
        return true;
    }
    LOGE("%s recv the socket len:%d  error: %s\n ", __func__, count, strerror(errno));
    return false;
}


            ret = ::recv(socket_, buff, 4, 0);
            if (!checkErrorNeedContinue(ret)) {
                break;
            }

count 为通过recv收到的长度,这个时候收到了socket 的长度为0,但是通过抓包来看没有收到对端的FIN,在检测到0后,主动发起了关闭。
期待:socket可以正常

另一个疑问:
在执行了close后,后续tcp重连,重新建立socket.
但是从抓包来看,第一次的连接没有断开,仍然在重传,第二次的连接建立后,server端检测第一次的连接还没有断开,然后断开了第二次连接。

即时通讯网 - 即时通讯开发者社区! 来源: - 即时通讯开发者社区!

标签:网络编程
上一篇:脑残式网络编程入门(七):面视必备,史上最通俗计算机网络分层详解下一篇:P2P技术详解(三):P2P中的NAT穿越(打洞)方案详解(进阶分析篇)
推荐方案
评论 2
最好说的具体一点。你这是在android上用JNI写c的socket代码吗
引用:JackJiang 发表于 2019-12-18 23:12
最好说的具体一点。你这是在android上用JNI写c的socket代码吗

在Android 上直接编写的native代码,是可执行文件,不是APK
打赏楼主 ×
使用微信打赏! 使用支付宝打赏!

返回顶部