<!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>