是不是缓冲区溢出?
我用下面这段代码写的线程接受特定端口收到的字符串,当字符串长到一定程度(比如4、5000字节)时,总是只能接受1920字节,可是我的缓冲区开到65535字节了呀,请问大侠我该怎么解决这个问题呢?代码中的CBlockingSocket和CSockAddr就是《VC++技术内幕》第30章的例子代码中的类,是winsock和sockaddr_in的子类。
UINT NetThreadProc(LPVOID pParam)
{
CSockAddr saClient;
CBlockingSocket sConnect;
char* buffer = new char[65535];
try {
if(!g_sListen.Accept(sConnect, saClient)) {
// view or application closed the listing socket
delete [] buffer;
return 0;
}
int nReceiveBytes = sConnect.Receive(buffer,65535,10);
CString receive(buffer,nReceiveBytes);
sConnect.Close();
g_sListen.Cleanup();
……//(在这里对receive对象进行处理,可是该对象只含有1920字节的内容)
}
catch(CBlockingSocketException* pe) {
LogBlockingSocketException(pParam, "SERVER:", pe);
pe->Delete();
}
delete [] buffer;
return 0;
}