在java -java.net.SocketException中下载文件时出错:连接重置

时间:2010-06-21 09:04:37

标签: java sockets

我正在尝试使用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。

可能是什么问题?

谢谢!

2 个答案:

答案 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了解具体方法:)