Re: Socket Buffer
On Wed, 14 Jan 2009 10:27:44 -0800, "Jim Langston"
<tazmaster@rocketmail.com> wrote:
"Carl Forsman" <fatwallet951@yahoo.com> wrote in message
news:a4kqm413sgvcjnc50o8ivbgdvruj6oevei@4ax.com...
I have a socket class that will receive data and print it out like the
following
When i debug the lpBuffer in VC++, why the lpBuffer has all those
strange data like I and at the end has some more strange data?
The only data i sent to the socket is only this -
30-00-E2-00-34-11-B8-02-01-13-33-26-21-47-4E-9E
but there is alot more strange character in the end, why?
http://www.oniva.com/upload/1356/bu.jpg
void Sock::OnDataReceived(const LPBYTE lpBuffer, DWORD dwCount)
{
for (DWORD i = 0; i < dwCount; i++) {
m_bReceiveBuffer[m_nReceiveIndex] = lpBuffer[i];
m_nReceiveIndex = (m_nReceiveIndex + 1) % RECEIVE_BUFFER_SIZE;
}
cout<< (const char*)m_bReceiveBuffer;
}
In the data you are outputting the last byte is 9E. That is not 0. cout <<
char* will keep printing characters until it hits a null character, one with
the value 0. Which you didn't provide, so it keeps showing whatever happens
to be in memory after your valid data til it reaches a null char. You are
sending binary data yet trying to output it as character string data.
Unfortunately when I squeeze apples I dont get orange juice.
thanks for the hint!
yes, array must set to 0
and then convert to (const char*) to have the whole string converted.
does convert to (char *) also need to terminate with 0 in array?
otherwise some strange character will show up?
for (DWORD i = 0; i < dwCount; i++) {
m_bReceiveBuffer[m_nReceiveIndex] = lpBuffer[i];
m_nReceiveIndex = (m_nReceiveIndex + 1) %
RECEIVE_BUFFER_SIZE;
}
// must terminate the array to 0 for the array to convert to
string
m_bReceiveBuffer[m_nReceiveIndex] = 0;
cout<< (const char*)m_bReceiveBuffer;