美文网首页技能
iOS端TCP通信小记

iOS端TCP通信小记

作者: 达若漠沙 | 来源:发表于2018-03-21 11:43 被阅读9次

    前段时间使用第三方框架CocoaAsyncSocket实现了局域网图片同步,最近在处理音频文件同步,前者是Android向iOS同步,后者是iOS向Andriod同步。

    在接收tcp消息时,发现一个问题:只能接收一次消息,下一次的消息无法收到。

    经过与安卓端同事联调,发现,安卓每回复一条tcp消息后,就把该tcp关闭掉。(奇怪的设计,生生的将tcp用成了udp)

    于是在iOS端使用两个socket,一个用来接收,一个用来发送,发送前再次与安卓建立一个tcp连接。

    这个方案后来进行了优化,发送和接收使用同一个socket,安卓端不再把tcp给主动断开,那么在这个种情况下,只需要Android与iOS使用一个socket进行读写,要注意的一点是,写完数据好要记得在代理防范来继续执行读socket的方法,不然依然会出现只能接收一次消息的情况。

    //写的回调

    - (void)socket:(GCDAsyncSocket*)sock didWriteDataWithTag:(long)tag

    {

        NSLog(@"写的回调,tag:%ld",tag);

        // 继续监听

        [sockreadDataWithTimeout:-1 tag:500];

    }

    目前还有一个端口占用的问题,如果频繁开启tcp Server,会出现端口被占用无法开启的问题。在网上也有找方法,但还在进一步研究中,有结果了,继续更新。如果有小伙伴处理过tcp端口被占用的情况,请不吝赐教哦~

    相关文章

      网友评论

        本文标题:iOS端TCP通信小记

        本文链接:https://www.haomeiwen.com/subject/gfvwqftx.html