<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML><HEAD>
<META content="text/html; charset=gb2312" http-equiv=Content-Type>
<STYLE>
BLOCKQUOTE {
        MARGIN-BOTTOM: 0px; MARGIN-TOP: 0px; MARGIN-LEFT: 2em
}
OL {
        MARGIN-BOTTOM: 0px; MARGIN-TOP: 0px
}
UL {
        MARGIN-BOTTOM: 0px; MARGIN-TOP: 0px
}
P {
        MARGIN-BOTTOM: 0px; MARGIN-TOP: 0px
}
DIV.FoxDiv20190921142813656055 {
        FONT-SIZE: 10.5pt; FONT-FAMILY: Î¢ÈíÑźÚ; COLOR: #000000; MARGIN: 10px; LINE-HEIGHT: 1.5
}
DIV.FoxDiv20190921144506751002 {
        FONT-SIZE: 10.5pt; FONT-FAMILY: Î¢ÈíÑźÚ; COLOR: #000000; MARGIN: 10px; LINE-HEIGHT: 1.5
}
BODY {
        FONT-SIZE: 10.5pt; FONT-FAMILY: Î¢ÈíÑźÚ; COLOR: #000000; LINE-HEIGHT: 1.5
}
</STYLE>

<META name=GENERATOR content="MSHTML 11.00.10570.1001">
<STYLE>BLOCKQUOTE {
        MARGIN-TOP: 0px
}
OL {
        MARGIN-TOP: 0px
}
UL {
        MARGIN-TOP: 0px
}
</STYLE>

<STYLE>BLOCKQUOTE {
        MARGIN-TOP: 0px
}
OL {
        MARGIN-TOP: 0px
}
UL {
        MARGIN-TOP: 0px
}
</STYLE>
</HEAD>
<BODY style="MARGIN: 10px">
<DIV>
<DIV class=FoxDiv20190921144506751002 style="BACKGROUND-COLOR: white">
<STYLE>BLOCKQUOTE {
        MARGIN-BOTTOM: 0px; MARGIN-TOP: 0px; MARGIN-LEFT: 2em
}
OL {
        MARGIN-BOTTOM: 0px; MARGIN-TOP: 0px
}
UL {
        MARGIN-BOTTOM: 0px; MARGIN-TOP: 0px
}
P {
        MARGIN-BOTTOM: 0px; MARGIN-TOP: 0px
}
DIV.FoxDiv20190921142813656055 {
        FONT-SIZE: 10.5pt; FONT-FAMILY: Î¢ÈíÑźÚ; COLOR: #000000; MARGIN: 10px; LINE-HEIGHT: 1.5
}
</STYLE>

<META name=GENERATOR content="MSHTML 11.00.10570.1001">
<STYLE>BLOCKQUOTE {
        MARGIN-TOP: 0px
}
OL {
        MARGIN-TOP: 0px
}
UL {
        MARGIN-TOP: 0px
}
</STYLE>

<DIV>Hello, everyone ! </DIV>
<DIV>
<DIV class=FoxDiv20190921142813656055 style="BACKGROUND-COLOR: white">
<DIV> </DIV>
<DIV>I'm using openssl as client in blocking mode , i have a problem .</DIV>
<DIV>Sometimes my program can't  receive data , and acctually 
server has been sent the data to me.</DIV>
<DIV>I can only  receive the data by sending another request . Then 
the data i expected arrived with a new data sent by server .</DIV>
<DIV> </DIV>
<DIV>Below is my code </DIV>
<DIV>------------------------------------------------------------------------------</DIV>
<DIV>bool can_read()</DIV>
<DIV>
<DIV>{</DIV>
<DIV style="TEXT-INDENT: 2em">struct timeval tv = {0 , 100};</DIV>
<DIV>       FD_ZERO(&m_rfds);</DIV>
<DIV>       FD_SET(m_socket.fd(), 
&m_rfds);</DIV>
<DIV style="TEXT-INDENT: 2em">int ret = select( m_socket.fd()+1, &m_rfds , 
NULL, NULL, &tv);</DIV>
<DIV style="TEXT-INDENT: 2em">return ret > 0 ; </DIV>
<DIV>}</DIV></DIV>
<DIV> </DIV>
<DIV>//this is the main process</DIV>
<DIV>int try_receive(char * buf , int len )</DIV>
<DIV>{</DIV>
<DIV style="TEXT-INDENT: 2em">if( !can_read())</DIV>
<DIV style="TEXT-INDENT: 4em">return -1;</DIV>
<DIV style="TEXT-INDENT: 4em"> </DIV>
<DIV style="TEXT-INDENT: 2em">return SSL_read(m_ssl, buf, len); </DIV>
<DIV>}</DIV>
<DIV>-------------------------------------------------------------------------------</DIV>
<DIV> </DIV>
<DIV>I'd really appreciate if you could tell me what's wrong with this code 
.<SPAN></DIV></SPAN></DIV></DIV></DIV></DIV></BODY></HTML>