关于网友提出的“ CSocket一Accpet就报错”问题疑问,本网通过在网上对“ CSocket一Accpet就报错”有关的相关答案进行了整理,供用户进行参考,详细问题解答如下:
问题: CSocket一Accpet就报错描述:
void CWSocketServerDlg::OnBnClickedButton1()
{
// TODO: 在此添加控件通知处理程序代码
CSocket* serversocket=new CSocket();
if(!(serversocket->Create(6000)))
{
MessageBox("端口创建失败");
}
if(serversocket->Listen())
{
AfxBeginThread(BeginReceive,(LPVOID)serversocket);
}
}
UINT CWSocketServerDlg::BeginReceive(LPVOID pParam)
{
CSocket* serversocket=(CSocket *)pParam;
CSocket* acceptsocket=new CSocket();
CString str1;
char buf[20];
serversocket->Accept(*acceptsocket);
while(1) //持续性线程函数里总会看到
{
acceptsocket->Receive(buf,20,0);
str1=buf;
........
}
return 0;
}
问题1.是执行到serversocket->Accept(*acceptsocket);就非法操作退出
2.new 完是不是一定要delete
解决方案1:
serversocket->Listen(1)
new了一定要delete