【问题标题】:error while downloading file in java -java.net.SocketException: Connection reset在 java -java.net.SocketException 中下载文件时出错:连接重置
【发布时间】:2010-06-21 09:04:36
【问题描述】:

我正在尝试使用 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();
           }
          }

我正在向另一方发送文件大小,然后发送每个字节, 在字节结束之前,它会抛出上述异常,说连接重置。

可能是什么问题?

谢谢!

【问题讨论】:

  • 请使用Markdown格式化您的代码。
  • 我想知道你在哪里找到了 DataInputStream.read(void) 方法。

标签: java sockets


【解决方案1】:

为什么你认为这一行返回的是流中的字节数??

long size = in.readLong(); //get the size

你应该做in.read()直到它返回-1。

【讨论】:

    【解决方案2】:

    我认为循环应该是这样的:

     for (int i=0; i<size; i++)...
    

    因为流是基于 0 的。

    此外,您可能希望继续阅读直到到达 EOF,而不是阅读特定数量的字节。请参阅this tutorial 了解如何:)

    【讨论】:

      猜你喜欢
      • 2011-10-09
      • 2011-11-01
      • 2010-09-08
      • 2021-03-10
      相关资源
      最近更新 更多