基于高通SA522平台socket开发总结

TCP消息机制设计
项目内容:对接高通socket网络通信,给应用层HTTP、MQTT等提供TCP协议栈
主要工作内容:
1.掌握高通socket通信接口的含义,封装connect、send、recv、close等接口,实现连接、读写、关闭等操作
2.设计消息处理线程。将上层发来的消息先由自已创建的线程来处理。由此线程来处理来自上层存放在消息队列里的消息
等到高通socket事件的回调上报之后,通过已注册回调通知上层调用,如果消息处理的socket接口是阻塞,则重新插入队列,等待下次的消息遍历处理
3.设计多个消息事件的标志位,从而配合异步回调的通知事件
4.设计消息的预处理模式,管理每路socket下一次需要的消息
5.对该平台无法做到接受事件的主动上报,增加read事件的poll流程及接受数据的缓存机制
6.对多路连接的close关闭设计成pending流程,轮询处理待关闭的sockfd

socket问题:
1.客户端连接不上服务端的问题:ip、port在传入的过程中没有考虑大小端转换的问题,通过wireshark抓包立刻得知ip、port是否有误
2.connect连接会大概率时延的问题:网络中出现了重传的问题,消耗了大量的时间(三次重传耗时21s)
问题原因:高通平台插上usb,PC会自动拨号是因为Windows的WWAN AutoConfig服务是开机自动启用了,当检测到(安装了高通驱动的)device 连接时会自动发拨号指令,触发PLMN搜索阻塞报文。在手动NW扫描期间不允许数据。当NW扫描结束并发生TCP重传时,pkt最终发送出去并创建TCP套接字。
3.客户端读取不到服务端发送的数据:在创建网络过程中不设置pdp_num的话,默认是设置第一路,但是第一路是网卡,数据默认是被这里接收到,但是无法解析出来,第二路apn是IMS,默认激活的。
解决方式:当前项目是根据apn来做区分的,后面激活跟第一路apn不同的通道之后测试才通过
4.close无法关闭多路连接 设置setopt断链延时操作https://www.cnblogs.com/my_life/articles/5174585.html
socket问题: send/sendto都有概率数据发送不到对端的情况

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值