Mar*_*nna 1 java sockets outputstream objectoutputstream
我有一个使用SSLSocket连接到服务器的客户端.接下来,我尝试创建一个OOSObjectOutputStream oos = new ObjectOutputStream(sslsocket.getOutputStream());
如果一切都在服务器端运行良好,这很好.但是,我想在客户端尝试创建ObjectOutputStream,但如果在60秒内没有发生,请记录错误并继续处理.我没有看到任何超时选项.如何做到这一点的任何例子?
SSLSocket sslsocket;
try {
System.setProperty("javax.net.ssl.trustStore", <myKeystore>);
System.setProperty("javax.net.ssl.trustStorePassword", <myPW>);
SSLSocketFactory sslsocketfactory = (SSLSocketFactory) SSLSocketFactory.getDefault();
sslsocket = (SSLSocket) sslsocketfactory.createSocket(InetAddress.getLocalHost(), <myPort>);
} catch (Throwable e) {
logger.logError(e.getMessage());
return null;
}
// This is where it hangs forever
ObjectOutputStream oos = new ObjectOutputStream(sslsocket.getOutputStream());
oos.flush(); // never gets here
oos.writeObject(orders);
ObjectInputStream ois = new ObjectInputStream(sslsocket.getInputStream());
Run Code Online (Sandbox Code Playgroud)
您必须在ObjectInputStream之前创建ObjectOutputStream.
编辑:见下面的评论.真正的问题是慢速SSL握手,它发生在套接字上的第一个I/O中,并且在此期间执行读取以及写入.所以解决方案是设置读取超时.
| 归档时间: |
|
| 查看次数: |
1129 次 |
| 最近记录: |