大家好:
我最近练习socket。作了一个很简单的例子。
就是分别建立两个单文档形式的工程。一个是客户端,另一个是服务器端。
在这两个工程里,建立了一个类:CMsocket:public CAsyncSocket。
然后按照msdn说的,在app的InitInstance建立
if (!AfxSocketInit())
{
AfxMessageBox("Socket初始化失败");
return FALSE;
}然后分别建立客户端和服务器端的socket.
服务器端:
首先在CMsocket建立
void CMySocket::OnAccept(int ErrorCode)
{
CAsyncSocket::OnAccept(ErrorCode);
ASSERT(m_pView);
if (ErrorCode==0)
{
m_pView->OnAccept();
}
}
然后在view里面
void CSocketServerView::OnListen()
if(!m_MySocket.Create(4000))
{
int aaa=m_MySocket.GetLastError();
//int aaa=GetLastError();
}
AfxMessageBox("创建socket成功");
if(!m_MySocket.Listen())
{
AfxMessageBox("侦听失败");
return;
}
AfxMessageBox("等待连接");void CSocketServerView::OnAccept()
{
AfxMessageBox("accept is called");
m_MessageSocket=new CMySocket(this);
if(!m_MySocket.Accept(*m_MessageSocket))
{
AfxMessageBox("无法接收连接");
delete m_MessageSocket;
m_MessageSocket=NULL;
return;
}
AfxMessageBox("成功接收连接");
}然后建立客户端,
步骤也是首先创建socket.然后和服务器连接。执行的时候,都显示socket创建成功,服务器端还显示等待连接。
但是当客户端连接的时候,经过跟踪
void CSocketServerView::OnAccept()的第一条语句AfxMessageBox("accept is called");已经被执行,但是后面的语句就出现异常,
请大家帮我看看是什么问题,多谢了。
我最近练习socket。作了一个很简单的例子。
就是分别建立两个单文档形式的工程。一个是客户端,另一个是服务器端。
在这两个工程里,建立了一个类:CMsocket:public CAsyncSocket。
然后按照msdn说的,在app的InitInstance建立
if (!AfxSocketInit())
{
AfxMessageBox("Socket初始化失败");
return FALSE;
}然后分别建立客户端和服务器端的socket.
服务器端:
首先在CMsocket建立
void CMySocket::OnAccept(int ErrorCode)
{
CAsyncSocket::OnAccept(ErrorCode);
ASSERT(m_pView);
if (ErrorCode==0)
{
m_pView->OnAccept();
}
}
然后在view里面
void CSocketServerView::OnListen()
if(!m_MySocket.Create(4000))
{
int aaa=m_MySocket.GetLastError();
//int aaa=GetLastError();
}
AfxMessageBox("创建socket成功");
if(!m_MySocket.Listen())
{
AfxMessageBox("侦听失败");
return;
}
AfxMessageBox("等待连接");void CSocketServerView::OnAccept()
{
AfxMessageBox("accept is called");
m_MessageSocket=new CMySocket(this);
if(!m_MySocket.Accept(*m_MessageSocket))
{
AfxMessageBox("无法接收连接");
delete m_MessageSocket;
m_MessageSocket=NULL;
return;
}
AfxMessageBox("成功接收连接");
}然后建立客户端,
步骤也是首先创建socket.然后和服务器连接。执行的时候,都显示socket创建成功,服务器端还显示等待连接。
但是当客户端连接的时候,经过跟踪
void CSocketServerView::OnAccept()的第一条语句AfxMessageBox("accept is called");已经被执行,但是后面的语句就出现异常,
请大家帮我看看是什么问题,多谢了。
void CSocketServerView::OnAccept()
m_MessageSocket=new CMySocket(this);
if(!m_MySocket.Accept(*m_MessageSocket))
{
AfxMessageBox("无法接收连接");
delete m_MessageSocket;
m_MessageSocket=NULL;
return;
}
这段话过不去阿
改成一个指针行不行,我以前几遇到过这种问题