Создал класс:
Код: Выделить всё
class CSocketStorage : public CAsyncSocket
{
public:
CSocketStorage();
virtual ~CSocketStorage();
CDialog* m_pWnd;
void SetParent(CDialog* pWnd){m_pWnd = pWnd;}
void OnAccept(int nErrorCode);
void OnConnect(int nErrorCode);
void OnClose(int nErrorCode);
void OnReceive(int nErrorCode);
void OnSend(int nErrorCode);
}
Код: Выделить всё
CSocketStorage m_sListenSocket;
CSocketStorage m_sConnectSocket;
void CClServerDlg::OnBnClickedBconnect()
{
UpdateData(TRUE);
if(m_iClient == 0)
{
m_sConnectSocket.Create();
m_sConnectSocket.Connect(m_strName, m_iPort); //m_iPort=4000, m_strName = "loopback"
}
else
{
m_sListenSocket.Create(m_iPort);
m_sListenSocket.Listen();
}
}
Код: Выделить всё
void CClServerDlg::OnBnClickedBsend()
{
int iLen;
int iSent;
UpdateData(TRUE);
if(m_strMessage != "")
{
iLen = m_strMessage.GetLength();
iSent = m_sConnectSocket.Send(m_strMessage, iLen);
if(iSent == SOCKET_ERROR)
{
}
else
{
m_ctlSent.AddString(m_strMessage);
UpdateData(FALSE);
}
}
}

void CClServerDlg::OnReceive(void)
Код: Выделить всё
{
MessageBox(_T("OnReceive"));
char* chBuf = new char[1025];
int iBufSize = 1024;
int iRcvd;
CString strRecvd;
iRcvd = m_sListenSocket.Receive(chBuf, iBufSize);
if(iRcvd == SOCKET_ERROR)
{
MessageBox(_T("Error"));
}
else
{
chBuf[iRcvd] = NULL;
strRecvd = chBuf;
m_ctlRecvd.AddString(strRecvd);
UpdateData(FALSE);
}
}