类型:转载 责任编辑:asp.net 日期:2007/05/23
热门软件下载:
用CAsyncSocket做了局域网聊天程序,服务和客户分开写的
现在连接正常,客户端可以给服务端发消息,服务端却不可以发给客户端
其中OnReceive和OnSend的函数是一样的
客户端:
void CMySock::OnReceive(int nErrorCode)
{
// TODO: Add your specialized code here and/or call the base class
m_nLength = Receive( m_szBuffer, sizeof(m_szBuffer), 0 );
CCSockClientApp* pApp = ( CCSockClientApp * )AfxGetApp();
CCSockClientDlg* pDlg = ( CCSockClientDlg * )&pApp->ClientDlg ;
pDlg -> m_MSGS.AddString ( m_szBuffer );
memset( m_szBuffer, 0, sizeof(m_szBuffer) );
CAsyncSocket::OnReceive(nErrorCode);
}
void CMySock::OnSend(int nErrorCode)
{
// TODO: Add your specialized code here and/or call the base class
Send( m_szBuffer, m_nLength, 0 );
m_nLength = 0;
memset( m_szBuffer, 0, sizeof(m_szBuffer) );
AsyncSelect(FD_READ);
CAsyncSocket::OnSend(nErrorCode);
}
服务端:
void CNewSocket::OnReceive(int nErrorCode)
{
// TODO: Add your specialized code here and/or call the base class
m_nLength = Receive( m_szBuffer, sizeof(m_szBuffer), 0 );
CCSockServerApp * pApp = ( CCSockServerApp * )AfxGetApp();
CSockServerDlg * pDlg = ( CSockServerDlg *)&pApp -> SockServerDlg;
pDlg -> m_MSGS.InsertString( -1, m_szBuffer );
memset( m_szBuffer, 0, sizeof(m_szBuffer) );
CAsyncSocket::OnReceive(nErrorCode);
}
void CNewSocket::OnSend(int nErrorCode)
{
// TODO: Add your specialized code here and/or call the base class
m_pSocket -> Send( m_szBuffer, m_nLength, 0 );
m_nLength = 0;
memset( m_szBuffer, 0, sizeof(m_szBuffer) );
//¼ÌÐøÌáÇëÒ»¸ö¡°¶Á¡±µÄÍøÂçʼþ£¬½ÓÊÕServerÏûÏ¢
m_pSocket -> AsyncSelect(FD_READ);
CAsyncSocket::OnSend(nErrorCode);
}
怀疑是OnAccept的问题
代码如下:
void CNewSocket::OnAccept(int nErrorCode)
{
// TODO: Add your specialized code here and/or call the base class
CNewSocket * pSocket = new CNewSocket();
if(Accept(* pSocket))
{
pSocket->AsyncSelect(FD_READ);
m_pSocket = pSocket;
}
else
delete pSocket;
CAsyncSocket::OnAccept(nErrorCode);
}
请高人指点
网友回答:
服务器端:
void CNewSocket::OnReceive(int nErrorCode)
{
// TODO: Add your specialized code here and/or call the base class
m_nLength = Receive( m_szBuffer, sizeof(m_szBuffer), 0 );
CCSockServerApp * pApp = ( CCSockServerApp * )AfxGetApp();
CSockServerDlg * pDlg = ( CSockServerDlg *)&pApp -> SockServerDlg;
pDlg -> m_MSGS.InsertString( -1, m_szBuffer );
m_pSocket -> Send( m_szBuffer, m_nLength, 0 );
memset( m_szBuffer, 0, sizeof(m_szBuffer) );
CAsyncSocket::OnReceive(nErrorCode);
}