安卓初学者,现有Android给PC传送文件的源代码存在严重问题,请帮忙指正一下。 30

我想在电脑端用VCSOCKET接收文件,安卓发送文件。电脑端跟电脑端传送文件是正常的,但是安卓传送过来的文件,基本上都有问题。我测试过多种格式的文件传送,mp3跟压缩文件... 我想在电脑端用VC SOCKET接收文件,安卓发送文件。电脑端跟电脑端传送文件是正常的,但是安卓传送过来的文件,基本上都有问题。我测试过多种格式的文件传送,mp3跟压缩文件能够打开,其他格式的文件都有不同程度的数据丢失(比如手机上900kb,到电脑上只有898kb)。
public String SendFile(String fileName, String path, String ipAddress, int port){
try {
Socket name = new Socket(ipAddress, port);
OutputStream outputName = name.getOutputStream();
OutputStreamWriter outputWriter = new OutputStreamWriter(outputName);
BufferedWriter bwName = new BufferedWriter(outputWriter);
bwName.write(fileName);
bwName.close();
outputWriter.close();
outputName.close();
name.close();

Socket data = new Socket(ipAddress, port);
OutputStream outputData = data.getOutputStream();
FileInputStream fileInput = new FileInputStream(path);
int size = -1;
byte[] buffer = new byte[1024];
while((size = fileInput.read(buffer, 0, 1024)) != -1){
outputData.write(buffer, 0, size);
}
outputData.close();
fileInput.close();
data.close();
return fileName + " 发送完成";
} catch (Exception e) {
return "发送错误:\n" + e.getMessage();
}
}
//PC端代码///////////////////////////////////////////////////////////////
CFile file;
char buffer[BUFFERSIZE];//每次收,清空buffer?
if( 0==file.Open(savePathName,CFile::modeWrite |CFile::modeCreate| CFile::typeBinary) )
while( true )
{
finish=sock.Receive(buffer,BUFFERSIZE);
if(0==finish)
break;
if(SOCKET_ERROR==finish)
{
sock.Close();
sp.pCLAN->SetFocus();
return 0;
}
file.Write(buffer,finish);
step+=finish;
}
file.Close( );
sock.Close( );
展开
 我来答
4318471pk
2014-07-06
知道答主
回答量:38
采纳率:0%
帮助的人:22.6万
展开全部
android开发者飘过,java部分,目测没问题,我正在学c++,能提供c部分的全部代码吗?。我也想学习一下
追问
我在VC端有三次接收,收文件大小,收文件名称,收文件数据。安卓端只有两次发送,问题应该就出在这了…能否帮我更正一下?我才学安卓。我VC之前也从未做过网络这一块的编程,现在手机上的,明天可以给你看看。
追答
有发才有收把,安卓发了两次,vc端怎么接得到三次
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式