Android socket编程
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Android socket编程相关的知识,希望对你有一定的参考价值。
android作为服务器端,接收pc端发来的文件,pc端是用c写的:
do
readlen=fread(buf,sizeof(char),MAX_LEN,fp_in);
if(readlen>0)
count+=readlen;
nSend = send(nSocket, buf, readlen, 0); //正式传输 循环把文件上传
while(count<File_length);//循环读取文件
pc端把文件发送完以后在Android端能完全接收到,但是接收完却退不出下面的那个while循环:
while((m=inputStream.read(bc))>=0)
fileOutputStream.write(bc,0,m);
fileOutputStream.flush();
Log.i(tag, String.valueOf(m));
也就是说read一直不返回了啊。。。
不知道为什么。。该怎样改才行啊,求指导!!!!
发送方可以先将文件长度发送到接收方。接收方收到足够的字节数后退出while。
或者
发送方发送完毕后发送一个结束标志。接收方收到指定的标志后退出while。
或者
发送方发送完数据并flush后立即关闭socket。关闭socket后接收方的read会返回-1.
估计你的c端在发送完数据后没有关闭socket连接。如果不需要等待接收端反馈的话可以在发送端立即关闭socket连接。 参考技术A 试试先判断inputStream.available()>0再read
以上是关于Android socket编程的主要内容,如果未能解决你的问题,请参考以下文章