Java SSLSocket InputStream read()在第一次连接后阻塞
我有一个简单的程序,可以创建多个SSL套接字连接到一个服务器,该服务器发送回简单的文本数据。第一个ssl连接工作正常。在我创建到同一服务器和端口的第二个ssl连接后,执行会在read()调用处阻塞。如果我创建了多个单独的程序,每个程序只进行一个连接并并行运行,那么它就可以正常工作。因此,服务器可以处理多个并行连接。当我从同一个程序中创建多个连续连接时,read()块。我先关闭第一个连接,然后再打开第二个连接。还有一件事,当服务器和客户端都在同一台机器上运行时,我无法重现这个问题,只有当服务器远程运行时才会发生。有什么建议/想法吗?非常感谢您的任何意见Java SSLSocket InputStream read()在第一次连接后阻塞,java,sockets,ssl,Java,Sockets,Ssl,我有一个简单的程序,可以创建多个SSL套接字连接到一个服务器,该服务器发送回简单的文本数据。第一个ssl连接工作正常。在我创建到同一服务器和端口的第二个ssl连接后,执行会在read()调用处阻塞。如果我创建了多个单独的程序,每个程序只进行一个连接并并行运行,那么它就可以正常工作。因此,服务器可以处理多个并行连接。当我从同一个程序中创建多个连续连接时,read()块。我先关闭第一个连接,然后再打开第二个连接。还有一件事,当服务器和客户端都在同一台机器上运行时,我无法重现这个问题,只有当服务器远程
public static int getPort(String agentHost, int agentPort, String token) {
int port_num = 0;
InputStream in = null;
BufferedWriter out = null;
SSLSocket s = null;
try {
s = (SSLSocket) SSLSocketFactory.getDefault().createSocket(agentHost, agentPort);
String message = token;
out = new BufferedWriter(new OutputStreamWriter(s.getOutputStream()));
out.write(message);
out.flush();
in =s.getInputStream();
byte[] buffer = new byte[32];
System.out.println("Waiting on read");
int bytes_read = in.read(buffer);
System.out.println("read " + bytes_read + " bytes" );
if(bytes_read > 0) {
String port_s = new String(buffer, 0, bytes_read, "UTF-8"); // if the charset is UTF-8
port_s = port_s.trim();
port_num = Integer.parseInt(port_s);
}
else
System.out.println("------Error in call---------");
}
catch ( IOException e) {
e.printStackTrace();
}
finally {
try {
if(s != null) s.close();
} catch (IOException e) {
e.printStackTrace();
}
}
return port_num;
}问题显然出在服务器端。它没有发送。谢谢。你是对的,这是服务器的问题。它没有发送。