gpt4 book ai didi

java - 通过java下载时jvm_bind问题

转载 作者:行者123 更新时间:2023-12-01 15:55:09 25 4
gpt4 key购买 nike

我编写了以下代码来下载文件。

         java.io.BufferedInputStream in = 
new java.io.BufferedInputStream(new java.net.URL(url).openStream());

java.io.FileOutputStream fos = new java.io.FileOutputStream(filename);

java.io.BufferedOutputStream bout = new BufferedOutputStream(fos,1024);
byte[] data = new byte[1024];
int x=0;
while((x=in.read(data,0,1024))>=0)
{

bout.write(data,0,x);
}
if(filename.equalsIgnoreCase("table.csv"))
{
updateflag=true;
}
if(filename.equalsIgnoreCase("quotes.csv"))
{
quoteupdate=true;
}
bout.flush();
bout.close();
in.close();

现在,当名为“table.csv”的文件作为参数传递给下载函数时,一切都会顺利进行。问题是当我下载“table.csv”后尝试下载“quotes.csv”时。

确切的调用是这样的:

             url="http://ichart.finance.yahoo.com/table.csv?    s=%5EBSESN&a=00&b=31&c=2011&d="+(month-1)+"&e="+day+"&f="+year+"&g=d&ignore=.csv";
updateflag=true;

downloadDB("table.csv",url);


System.out.print("quotes to download");

url="http://download.finance.yahoo.com/d/quotes.csv?
s=%5EBSESN&f=sl1d1t1c1ohgv&e=.csv";
if(candownload==true)
{
downloadDB("quotes.csv",url);
}
candownload=false;

我收到错误消息:无法识别的 Windows Socket 错误:0:JVM_BIND

现在我明白 JVM_BIND 是说我已经有一个进程附加到端口 80。但是,我在函数结束时关闭了所有流。那为什么会出现这种情况呢?提前致谢

最佳答案

我没有足够的权限发表评论,因此我很抱歉提供的答案可能无法解决确切的问题。AFAIK 保持流打开不一定会导致此问题。这实际上是由于在已经存在服务器套接字的情况下尝试绑定(bind)新服务器套接字而引起的。所以...也许您应该检查一下您的代码是否在每次(使用相同的端口)调用下载函数时尝试绑定(bind)一个新的 ServerSocket。你真的不需要这样做。绑定(bind)一次,然后在接受方法中生成一个执行下载的新线程。

关于java - 通过java下载时jvm_bind问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5235130/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com