我有一个简单的程序,可以创建多个SSL Socket连接到服务器,发送回简单的文本数据。第一个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;
}