有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

“java.net.BindException:地址已在使用中”,尝试为负载测试快速创建和销毁socket时

我试图通过打开大量到服务器的socket连接,进行身份验证,关闭连接,然后重复,来加载测试Java服务器。我的应用程序在一段时间内运行良好,但最终我得到:

java.net.BindException: Address already in use: connect

根据我阅读的文档,这是因为在调用close()之后的一段时间内,关闭的socket仍然占用分配给它们的本地地址。这取决于操作系统,但可能以分钟为单位。我试着在socket上调用setReuseAddress(true),希望它的地址在调用close()后可以立即重用。不幸的是,情况似乎并非如此

我创建socket的代码是:

Socket socket = new Socket();
socket.setReuseAddress(true);
socket.connect(new InetSocketAddress(m_host, m_port));

但我还是犯了这个错误:

java.net.BindException: Address already in use: connect after awhile.

有没有其他方法来完成我想做的事情?我想举个例子:打开100个插座,全部关闭,打开200个插座,全部关闭,打开300个等等,最多2000个左右的插座

任何帮助都将不胜感激


共 (0) 个答案