<div class="__aliyun_email_body_block"><div  style="clear:both;"><div  style="margin:.0px;padding:.0px;border:.0px;outline:.0px;color:#000000;font-family:微软雅黑;font-size:14.0px;font-style:normal;font-variant-ligatures:normal;font-variant-caps:normal;font-weight:400;text-align:start;text-indent:.0px;text-transform:none;widows:2;text-decoration-style:initial;text-decoration-color:initial;">Hello</div><div  style="margin:.0px;padding:.0px;border:.0px;outline:.0px;color:#000000;font-family:微软雅黑;font-size:14.0px;font-style:normal;font-variant-ligatures:normal;font-variant-caps:normal;font-weight:400;text-align:start;text-indent:.0px;text-transform:none;widows:2;text-decoration-style:initial;text-decoration-color:initial;"> </div><div  style="margin:.0px;padding:.0px;border:.0px;outline:.0px;color:#000000;font-family:微软雅黑;font-size:14.0px;font-style:normal;font-variant-ligatures:normal;font-variant-caps:normal;font-weight:400;text-align:start;text-indent:.0px;text-transform:none;widows:2;text-decoration-style:initial;text-decoration-color:initial;">I'm using openssl as client in blocking mode , i have a problem .</div><div  style="margin:.0px;padding:.0px;border:.0px;outline:.0px;color:#000000;font-family:微软雅黑;font-size:14.0px;font-style:normal;font-variant-ligatures:normal;font-variant-caps:normal;font-weight:400;text-align:start;text-indent:.0px;text-transform:none;widows:2;text-decoration-style:initial;text-decoration-color:initial;">Sometimes my program can't  receive data , and acctually server has been sent the data to me.</div><div  style="margin:.0px;padding:.0px;border:.0px;outline:.0px;color:#000000;font-family:微软雅黑;font-size:14.0px;font-style:normal;font-variant-ligatures:normal;font-variant-caps:normal;font-weight:400;text-align:start;text-indent:.0px;text-transform:none;widows:2;text-decoration-style:initial;text-decoration-color:initial;">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  style="margin:.0px;padding:.0px;border:.0px;outline:.0px;color:#000000;font-family:微软雅黑;font-size:14.0px;font-style:normal;font-variant-ligatures:normal;font-variant-caps:normal;font-weight:400;text-align:start;text-indent:.0px;text-transform:none;widows:2;text-decoration-style:initial;text-decoration-color:initial;"><br ></div><div  style="margin:.0px;padding:.0px;border:.0px;outline:.0px;color:#000000;font-family:微软雅黑;font-size:14.0px;font-style:normal;font-variant-ligatures:normal;font-variant-caps:normal;font-weight:400;text-align:start;text-indent:.0px;text-transform:none;widows:2;text-decoration-style:initial;text-decoration-color:initial;">------------------------------------------------------------------------------</div><div  style="margin:.0px;padding:.0px;border:.0px;outline:.0px;color:#000000;font-family:微软雅黑;font-size:14.0px;font-style:normal;font-variant-ligatures:normal;font-variant-caps:normal;font-weight:400;text-align:start;text-indent:.0px;text-transform:none;widows:2;text-decoration-style:initial;text-decoration-color:initial;">bool can_read()</div><div  style="margin:.0px;padding:.0px;border:.0px;outline:.0px;color:#000000;font-family:微软雅黑;font-size:14.0px;font-style:normal;font-variant-ligatures:normal;font-variant-caps:normal;font-weight:400;text-align:start;text-indent:.0px;text-transform:none;widows:2;text-decoration-style:initial;text-decoration-color:initial;"><div  style="margin:.0px;padding:.0px;border:.0px;outline:.0px;">{</div></div></div><div  style="clear:both;"><div  style="margin:.0px;padding:.0px;border:.0px;outline:.0px;color:#000000;font-family:微软雅黑;font-size:14.0px;font-style:normal;font-variant-ligatures:normal;font-variant-caps:normal;font-weight:400;text-align:start;text-indent:.0px;text-transform:none;widows:2;text-decoration-style:initial;text-decoration-color:initial;"><div  style="margin:.0px;padding:.0px;border:.0px;outline:.0px;">      if(SSL_pending(m_ssl))</div></div></div><div  style="clear:both;"><div  style="margin:.0px;padding:.0px;border:.0px;outline:.0px;color:#000000;font-family:微软雅黑;font-size:14.0px;font-style:normal;font-variant-ligatures:normal;font-variant-caps:normal;font-weight:400;text-align:start;text-indent:.0px;text-transform:none;widows:2;text-decoration-style:initial;text-decoration-color:initial;"><div  style="margin:.0px;padding:.0px;border:.0px;outline:.0px;">            return true;<br ></div></div></div><div  style="clear:both;"><div  style="margin:.0px;padding:.0px;border:.0px;outline:.0px;color:#000000;font-family:微软雅黑;font-size:14.0px;font-style:normal;font-variant-ligatures:normal;font-variant-caps:normal;font-weight:400;text-align:start;text-indent:.0px;text-transform:none;widows:2;text-decoration-style:initial;text-decoration-color:initial;"><div  style="margin:.0px;padding:.0px;border:.0px;outline:.0px;"></div><div  style="margin:.0px;padding:.0px;border:.0px;outline:.0px;text-indent:2.0em;">struct timeval tv = {0 , 100};</div><div  style="margin:.0px;padding:.0px;border:.0px;outline:.0px;">       FD_ZERO(&m_rfds);</div><div  style="margin:.0px;padding:.0px;border:.0px;outline:.0px;">       FD_SET(m_socket.fd(), &m_rfds);</div><div  style="margin:.0px;padding:.0px;border:.0px;outline:.0px;text-indent:2.0em;">int ret = select( m_socket.fd()+1, &m_rfds , NULL, NULL, &tv);</div><div  style="margin:.0px;padding:.0px;border:.0px;outline:.0px;text-indent:2.0em;">return ret > 0 ;</div><div  style="margin:.0px;padding:.0px;border:.0px;outline:.0px;">}</div></div><div  style="margin:.0px;padding:.0px;border:.0px;outline:.0px;color:#000000;font-family:微软雅黑;font-size:14.0px;font-style:normal;font-variant-ligatures:normal;font-variant-caps:normal;font-weight:400;text-align:start;text-indent:.0px;text-transform:none;widows:2;text-decoration-style:initial;text-decoration-color:initial;"> </div><div  style="margin:.0px;padding:.0px;border:.0px;outline:.0px;color:#000000;font-family:微软雅黑;font-size:14.0px;font-style:normal;font-variant-ligatures:normal;font-variant-caps:normal;font-weight:400;text-align:start;text-indent:.0px;text-transform:none;widows:2;text-decoration-style:initial;text-decoration-color:initial;">//this is the main process</div><div  style="margin:.0px;padding:.0px;border:.0px;outline:.0px;color:#000000;font-family:微软雅黑;font-size:14.0px;font-style:normal;font-variant-ligatures:normal;font-variant-caps:normal;font-weight:400;text-align:start;text-indent:.0px;text-transform:none;widows:2;text-decoration-style:initial;text-decoration-color:initial;">int try_receive(char * buf , int len )</div><div  style="margin:.0px;padding:.0px;border:.0px;outline:.0px;color:#000000;font-family:微软雅黑;font-size:14.0px;font-style:normal;font-variant-ligatures:normal;font-variant-caps:normal;font-weight:400;text-align:start;text-indent:.0px;text-transform:none;widows:2;text-decoration-style:initial;text-decoration-color:initial;">{</div><div  style="margin:.0px;padding:.0px;border:.0px;outline:.0px;color:#000000;font-family:微软雅黑;font-size:14.0px;font-style:normal;font-variant-ligatures:normal;font-variant-caps:normal;font-weight:400;text-align:start;text-transform:none;widows:2;text-decoration-style:initial;text-decoration-color:initial;text-indent:2.0em;">if( !can_read())</div><div  style="margin:.0px;padding:.0px;border:.0px;outline:.0px;color:#000000;font-family:微软雅黑;font-size:14.0px;font-style:normal;font-variant-ligatures:normal;font-variant-caps:normal;font-weight:400;text-align:start;text-transform:none;widows:2;text-decoration-style:initial;text-decoration-color:initial;text-indent:4.0em;">return -1;</div><div  style="margin:.0px;padding:.0px;border:.0px;outline:.0px;color:#000000;font-family:微软雅黑;font-size:14.0px;font-style:normal;font-variant-ligatures:normal;font-variant-caps:normal;font-weight:400;text-align:start;text-transform:none;widows:2;text-decoration-style:initial;text-decoration-color:initial;text-indent:4.0em;"> </div><div  style="margin:.0px;padding:.0px;border:.0px;outline:.0px;color:#000000;font-family:微软雅黑;font-size:14.0px;font-style:normal;font-variant-ligatures:normal;font-variant-caps:normal;font-weight:400;text-align:start;text-transform:none;widows:2;text-decoration-style:initial;text-decoration-color:initial;text-indent:2.0em;">return SSL_read(m_ssl, buf, len);</div><div  style="margin:.0px;padding:.0px;border:.0px;outline:.0px;color:#000000;font-family:微软雅黑;font-size:14.0px;font-style:normal;font-variant-ligatures:normal;font-variant-caps:normal;font-weight:400;text-align:start;text-indent:.0px;text-transform:none;widows:2;text-decoration-style:initial;text-decoration-color:initial;">}</div><div  style="margin:.0px;padding:.0px;border:.0px;outline:.0px;color:#000000;font-family:微软雅黑;font-size:14.0px;font-style:normal;font-variant-ligatures:normal;font-variant-caps:normal;font-weight:400;text-align:start;text-indent:.0px;text-transform:none;widows:2;text-decoration-style:initial;text-decoration-color:initial;">-------------------------------------------------------------------------------</div><div  style="margin:.0px;padding:.0px;border:.0px;outline:.0px;color:#000000;font-family:微软雅黑;font-size:14.0px;font-style:normal;font-variant-ligatures:normal;font-variant-caps:normal;font-weight:400;text-align:start;text-indent:.0px;text-transform:none;widows:2;text-decoration-style:initial;text-decoration-color:initial;"> Above is my code ,  my program get `false` from `can_read` although the server has sent response data</div><div  style="margin:.0px;padding:.0px;border:.0px;outline:.0px;color:#000000;font-family:微软雅黑;font-size:14.0px;font-style:normal;font-variant-ligatures:normal;font-variant-caps:normal;font-weight:400;text-align:start;text-indent:.0px;text-transform:none;widows:2;text-decoration-style:initial;text-decoration-color:initial;"> I really appreciate your help.</div><span  style="font-family:Tahoma,Arial,STHeiti,SimSun;font-size:14.0px;color:#000000;"><br ></span></div></div>