如何用CSocket进行网络编程?如编写聊天室等。用CSocket需要考虑阻塞问题,如何解决?
采用线程如何解决?我用如下线程函数int CStartServer::Run()
{
// TODO: Add your specialized code here and/or call the base class
CSocket csCSocket,ClientSocket; if(csCSocket.Create(5055,SOCK_STREAM)==0)
return CWinThread::Run(); csCSocket->Listen(1);
csCSocket->Accept(ClientSocket); while(1)
{
char cbBuffer[1000];
memset( cbBuffer, 0, sizeof( cbBuffer ) );
int nBytes =csCSocket->Receive( cbBuffer,sizeof( cbBuffer ) );
}
return CWinThread::Run();
}可是if(csCSocket.Create(5055,SOCK_STREAM)==0)和csCSocket->Accept(ClientSocket);执行出错,编译可以通过。
采用线程如何解决?我用如下线程函数int CStartServer::Run()
{
// TODO: Add your specialized code here and/or call the base class
CSocket csCSocket,ClientSocket; if(csCSocket.Create(5055,SOCK_STREAM)==0)
return CWinThread::Run(); csCSocket->Listen(1);
csCSocket->Accept(ClientSocket); while(1)
{
char cbBuffer[1000];
memset( cbBuffer, 0, sizeof( cbBuffer ) );
int nBytes =csCSocket->Receive( cbBuffer,sizeof( cbBuffer ) );
}
return CWinThread::Run();
}可是if(csCSocket.Create(5055,SOCK_STREAM)==0)和csCSocket->Accept(ClientSocket);执行出错,编译可以通过。
解决方案 »
- 关于getaddrinfo api源文件的编译
- VC++ 2008如此弱智吗?每次build的时候竟然不会停留在出错的行??
- MFC中改变字体问题!!!!!!
- 求助:Debug Assertion failed第一次点击菜单项时正常,关掉再点一次时就出现这个!!!
- 请教,如何打cab包,还有能否象winrar自解压那样,在安装完active以后,自动运行一个应用程序?
- 如何在Wince EVC环境下播放WMV,AVI?
- 怎么把DWORD转换为char型,大哥们帮帮我吧
- 一个WinMain的问题?
- ISAPI扩展用ADO连接MSSQL数据库的问题,就剩600分了全给了
- CAsyncSocket的receivefrom()问题。
- 完了,没分了.大家友情回答一下吧......
- VC6编译时出现的一个问题:LINK: extra operand
//////////////////////////////////////////////////
if(csCSocket.Create(5055,SOCK_STREAM)==-1)www.vckbase.com
这句话有问题吧,csCSocket是用来作为server socket用的,它只能Accept,不能接受数据的
接受数据是clientsocket的事吧
int nBytes =csCSocket->ClientSocket.Receive( cbBuffer,sizeof( cbBuffer ) );还有楼主的程序肯定编译不过的,错误太明显了
if(csCSocket.Create(5055,SOCK_STREAM)==0)
return CWinThread::Run();
CSocket csCSocket csCSocket->Listen(1); csCSocket->Accept(ClientSocket);
csCSocket 是类,啥时候变成CSocket* 类型了,应该写成csCSocket.Listen(1);csCSocket.Accept(ClientSocket); 吧
{
// TODO: Add your specialized code here and/or call the base class
CSocket csCSocket,ClientSocket; if(csCSocket.Create(5055,SOCK_STREAM)==0)
return CWinThread::Run(); csCSocket.Listen(1);
csCSocket.Accept(ClientSocket); while(1)
{
char cbBuffer[1000];
memset( cbBuffer, 0, sizeof( cbBuffer ) );
int nBytes =csCSocket.Receive( cbBuffer,sizeof( cbBuffer ) );
}
return CWinThread::Run();
}