我正在尝试使用java中的套接字和服务器下载文件。
myClient = new Socket(address,port);
myClient.setSoTimeout(MyFileManager.TIME_OUT);
in = new DataInputStream(myClient.getInputStream());
out = new DataOutputStream(myClient.getOutputStream());
File requestedFile = new File(_fileManager.getDir()+fileName); //creating the new file
// requestedFile.createNewFile(); //now it does
fos = new FileOutputStream(requestedFile);
long size = in.readLong(); //get the size
for (int i=1; i<=size; i++) {
try {
fos.write(in.read());
}
catch (IOException e) {
e.printStackTrace();
}
}
我正在向另一方发送文件大小,然后发送每个字节, 在字节结束之前,它抛出上述异常,表示conncetion reset。
可能是什么问题?
谢谢!
答案 0 :(得分:1)
为什么你认为这一行返回流中的字节数?
long size = in.readLong(); //get the size
你应该in.read()
直到它返回-1。
答案 1 :(得分:0)
我认为循环应该是这样的:
for (int i=0; i<size; i++)...
由于流是基于0的。
此外,您可能希望继续阅读,直到您点击EOF而不是读取特定数量的字节。请参阅this tutorial了解具体方法:)