【问题标题】:(Android) File download normally on one host, but 'completed immediately' on another(Android) 在一台主机上正常下载文件,但在另一台主机上“立即完成”
【发布时间】:2013-07-25 06:21:32
【问题描述】:

我很着急,所以我会简短地说。如果需要,我会在回到我的电脑时提供更多信息。

我正在为 Android 创建一个下载/上传速度测试应用。以下是部分代码:

InetAddress Host = InetAddress.getByName(myHoseName);
Socket s = new Socket(Host,80);

//prepare data stream for each direction
            OutputStream output = s.getOutputStream();
            InputStream input = s.getInputStream();

//send command
            output.write( ("GET "+ myFilePath +" HTTP/1.0\r\n").getBytes() );
            output.write("Accept: */*\r\n".getBytes());
            output.write("\r\n".getBytes());

 while ((DownloadedByte += input.read(BufferData,0,BufferData.length)) != -1)
            {   
                //download started... bla bla bla

问题:

  • 我在 2 台主机上有相同的测试文件。 (名称为test.jpg)

  • 一个看起来像这样:xxx.xxx.xxx.xxx(它是一个IP地址)

  • 还有一个是像my.testhost.com这样的域名

  • 问题是当我尝试从 xxx.xxx.xxx.xxx 下载时,一切正常

  • 但是当我尝试从 my.testhost.com 下载时,下载过程立即完成,Logcat 上几乎没有显示任何内容

我希望这些信息足以解决问题。抱歉,我稍后会提供更多信息,也许明天。

谢谢并尽快与您联系!

最好, 小猫

【问题讨论】:

    标签: android sockets http networking download


    【解决方案1】:

    这看起来很像从 my.testhost.com 下载失败,因此似乎立即完成,尽管它只是中止了。检查下载的数据以排除这种情况。

    失败可能由于多种原因而发生。很可能是主机名无法解析(查找名称 my.testhost.com 的 IP 不起作用),或者主机只能通过您需要配置的代理服务器才能访问,然后才能进行下载.

    【讨论】:

    • 嗨。非常感谢您的回答。我同意你的意见。我会看看我能对代理做些什么。与此同时,我还有更多信息要分享。我正在开发相同速度测试应用程序的iOS版本的队友似乎可以毫无问题地下载文件。但他使用的是 HTTP,而不是套接字。
    • 这也指向代理问题 - 如果您使用套接字,则不会使用代理。如果您使用一些支持 HTTP 的类,它们很可能使用系统的代理设置来定位和使用代理服务器。最好同时使用 java.net.URLConnection,因为这样会自动使用 Java 的代理设置。您可以从 URLConnection 中获取输入流,类似于从套接字中获取输入流并以完全相同的方式进行速度测试。
    • 感谢您的回答。似乎这就是原因。 =)
    猜你喜欢
    • 2016-05-23
    • 2012-09-29
    • 1970-01-01
    • 1970-01-01
    • 2019-11-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-01-06
    相关资源
    最近更新 更多