Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/sockets/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 无法将套接字绑定到我的本地地址_Java_Sockets_Binding - Fatal编程技术网

Java 无法将套接字绑定到我的本地地址

Java 无法将套接字绑定到我的本地地址,java,sockets,binding,Java,Sockets,Binding,我有一个javax.net.SSLSocket SSLSocketFactory sslsocketfactory = (SSLSocketFactory) SSLSocketFactory.getDefault(); SSLSocket sslSocket = (SSLSocket) sslsocketfactory.createSocket(host, hostPort, InetAddress.getByName(localAddress), localPort); sslSocket.s

我有一个
javax.net.SSLSocket

SSLSocketFactory sslsocketfactory = (SSLSocketFactory) SSLSocketFactory.getDefault();
SSLSocket sslSocket = (SSLSocket) sslsocketfactory.createSocket(host, hostPort, InetAddress.getByName(localAddress), localPort);
sslSocket.startHandshake();
我的客户端连接到服务器没有问题。 当我关闭连接
sslSocket.close()
并尝试使用相同的本地地址和相同的主机地址但不同的主机端口和不同的本地端口初始化一个新套接字时,连接被拒绝,我得到
java.net.ConnectException:连接被拒绝

SSLSocket sslSocket2 = (SSLSocket) sslsocketfactory.createSocket(host, hostPort2, InetAddress.getByName(localAddress), localPort2);
sslSocket2.startHandshake();
奇怪的是,当我尝试重新初始化新套接字而不将其绑定到本地地址和端口时,它工作正常:

SSLSocket sslSocket2 = (SSLSocket) sslsocketfactory.createSocket(host, port2);

有人知道发生了什么吗?

所以在大量挖掘之后,我找到了防止这种异常发生的方法。在套接字初始化之后,您需要添加行
sslSocket.setSoLinger(true,0)。
这里解释了索林格的工作原理。

我仍然不确定这是否是解决问题的正确方法,但我希望它能帮助有类似问题的人。

因此,在大量挖掘之后,我找到了防止这种异常发生的方法。在套接字初始化之后,您需要添加行
sslSocket.setSoLinger(true,0)。
这里解释了索林格的工作原理。
我仍然不确定这是否是解决问题的正确方法,但我希望它能帮助有类似问题的人