用的是C6657,利用NDK通过tcp进行数据传输,希望传输一张图片,大小约为1M。一开始在虚拟机上的ubuntu上进行传输,可以传输,但是速度较慢。于是我重新安装了一个ubuntu系统,并将原先可以运行的代码复制过去,但是在新系统上无法一次传输成功了。两边的传输代码如下:
ubuntu:while(len<ContentLength){len = send(sockfd, buf, ContentLength, 0);}
C6657: while (len < ContentLength ){len = recv( htmlSock, gRxBuffer, ContentLength, MSG_WAITALL );}
ContentLength都等于1228868。两端设备连接成功,可以相互发送一些短数据,所以应该不是连接的问题。发送端一直阻塞在send处。我尝试把发送的数据量减小,当发送量为20000时ubuntu端显示发送成功,只不过C6657端没有接受满ContentLength的数据量而继续阻塞而已。后来我又尝试把预定发送的数据量分开循环发送,每次发送20000,但是运行之后只有第一次发送成功,之后又会阻塞在send处。
因为在虚拟机中测试的时候是可以成功的,我换过电脑,但也会出现以上的问题,所以我不确定是哪边的问题。请问这种情况有可能是C6657方面的问题吗?比如recv函数出错什么的?该如何检测?