日期:2014-05-18  浏览次数:20667 次

关于Java.net.BindException,如何释放被占用的端口
我有一个页面,里面是循环去请求一个URL(会请求的很快,是拿到请求结果后马上再去请求),
如果这个页面只开一个好象是没有问题的,但如果开两个这个页面(就是两个循环请求),其中一个页面就会报
Java.net.BindExecption Address already in use:connect的异常(有时候两个都会),我查了下,
好象TCP/IP每次请求都会自动分配一个端口,并且有自动释放的间隔,用netstat -a 看了下,请求页面的时候果然多出很多端口,
请问这个问题有办法解决吗?

------解决方案--------------------
这个好办啊,一旦产生这个异常你就重新请求,重新请求会重新分配到新的端口
------解决方案--------------------
你这个不是循环请求,是无穷迭代吧,出错后溢出是必然的...

短时间的大量连接,端口被占用是没办法的,可以在发生异常后等待一段时间再去访问

------解决方案--------------------
HttpClient client = new HttpClient(); //这里可能引起端口冲突,把client做成成员变量试试看
HttpMethod method = new PostMethod(path+"/test.jsp");
client.executeMethod(method);
method.releaseConnection();
System.out.println("请求成功");
test(path); //这里导致堆栈溢出