可以在Java中基于JSSE的SSL套接字上并行执行读/写操作吗?

可以在Java中基于JSSE的SSL套接字上并行执行读/写操作吗?,java,multithreading,ssl,openssl,Java,Multithreading,Ssl,Openssl,最常用的SSL(OpenSSL)的“C”实现不支持其SSL会话上的并行操作。(即,不能对同一会话并行执行SSL_读取和SSL_写入) JavabasesSSL、JSSE是否支持此功能?i、 对于使用JSSE创建的同一个SSL会话,我可以在不同的线程上并行读写吗?如果是,它是否也能无缝地处理重新协商(即,如果从另一方收到重新协商请求,它是否会得到处理?) 因为,我对Java知之甚少或一无所知,我还有另一个非常基本的问题,在Java中,是否可以从不同的线程对同一个套接字进行并行读/写?是的,SSLS

最常用的SSL(OpenSSL)的“C”实现不支持其SSL会话上的并行操作。(即,不能对同一会话并行执行SSL_读取和SSL_写入)

JavabasesSSL、JSSE是否支持此功能?i、 对于使用JSSE创建的同一个SSL会话,我可以在不同的线程上并行读写吗?如果是,它是否也能无缝地处理重新协商(即,如果从另一方收到重新协商请求,它是否会得到处理?)


因为,我对Java知之甚少或一无所知,我还有另一个非常基本的问题,在Java中,是否可以从不同的线程对同一个套接字进行并行读/写?

是的,SSLSockets和套接字可以由不同的线程读写;是的,SSLSocket可以无缝地处理重新协商


您对“会话”的使用不太正确。每个SSL会话可以有多个SSLSocket(和openSSL套接字)。在Java中,它们都可以独立使用。

是的,sslsocket和socket可以通过单独的线程读写;是的,SSLSocket可以无缝地处理重新协商


您对“会话”的使用不太正确。每个SSL会话可以有多个SSLSocket(和openSSL套接字)。在Java中,它们都可以独立使用。

既然你在问Java,就不要给它贴上C标签。我正在删除那个标签。既然你在问Java,就不要给它贴上C标签。我正在删除那个标签。谢谢你的回答。你能详细说明一下吗?据我所知,如果应用程序不使用互斥来保护一个OpenSSL“SSL_S*”对象,那么它就不能被多个线程共享。但是,在Java中,如果应用程序不获取互斥锁,这可以实现吗?这是由Java内部完成的吗?Java在下面使用OpenSSL吗?我已经回答了。您可以使用多个线程。不需要信号量、互斥量或同步。Java不在幕后使用OpenSSL。谢谢,但是,现在由于我已经学习SSL很长一段时间了,我想知道如果对等方发起重新协商,Java实现如何处理它?在无缝重新协商处理的情况下,您的“读取”可能会执行“写入”,而“写入”可能会在内部执行“读取”。这是怎么处理的?有什么想法吗?另外,我没有理解你关于“每个会话有多个OpenSSL套接字”的观点。你说的会话到底是什么意思?它很有效。试试看。13年来从未担心过这件事。SSL会话是包含协商协议、密码套件和当前会话密钥的元组。正如我上面所说的,它可以在多个SSLSockets之间共享。谢谢你的回答。你能详细说明一下吗?据我所知,如果应用程序不使用互斥来保护一个OpenSSL“SSL_S*”对象,那么它就不能被多个线程共享。但是,在Java中,如果应用程序不获取互斥锁,这可以实现吗?这是由Java内部完成的吗?Java在下面使用OpenSSL吗?我已经回答了。您可以使用多个线程。不需要信号量、互斥量或同步。Java不在幕后使用OpenSSL。谢谢,但是,现在由于我已经学习SSL很长一段时间了,我想知道如果对等方发起重新协商,Java实现如何处理它?在无缝重新协商处理的情况下,您的“读取”可能会执行“写入”,而“写入”可能会在内部执行“读取”。这是怎么处理的?有什么想法吗?另外,我没有理解你关于“每个会话有多个OpenSSL套接字”的观点。你说的会话到底是什么意思?它很有效。试试看。13年来从未担心过这件事。SSL会话是包含协商协议、密码套件和当前会话密钥的元组。正如我上面所说的,它可以在多个SSLSocket之间共享。