Thank you very much for your reply .
My server running on centos 7.5 . And client running on windows 10
.
The data seems be cached on the server and not be sent out. Dose
centos have the same problem?
I'm not sure what the problem is .
I would really appreciate if you have any Suggestions.
Best Regards
发件人: John
Unsworth
发送时间: 2019-09-27 21:48
收件人: 路连峰; openssl-users
主题: Re: My client can not receive data in blocking
mode You do not say what OS you are running on. Solaris
11 has a known problem with not reporting queued data. This was fixed by
SRU-28.
Regards,
John Unsworth From: openssl-users
<openssl-users-bounces@xxxxxxxxxxx> on behalf of 路连峰
<llf@xxxxxxxxxx> Sent: Monday, September 23, 2019 4:55 am To: openssl-users Subject: My client can not receive data in blocking mode Hello
I'm
using openssl as client in blocking mode , i have a problem .
Sometimes
my program can't receive data , and acctually server has been
sent the data to me.
I
can only receive the data by sending another request . Then the data
i expected arrived with a new data sent by server .
------------------------------------------------------------------------------
bool
can_read()
{
if(SSL_pending(m_ssl)) return
true; struct
timeval tv = {0 , 100};
FD_ZERO(&m_rfds);
FD_SET(m_socket.fd(),
&m_rfds);
int
ret = select( m_socket.fd()+1, &m_rfds , NULL, NULL, &tv);
return
ret > 0 ;
} //this
is the main process
int
try_receive(char * buf , int len )
{
if(
!can_read())
return
-1;
return
SSL_read(m_ssl, buf, len);
}
-------------------------------------------------------------------------------
Above
is my code , my program get `false` from `can_read`
although the server has sent response data
I really appreciate your help. |