以下是我的代码:
//这个函数用来建立连接
bool CCmdSocket::connect(LPCTSTR lpszHostAddress, UINT nHostPort)
{
if (!Create() || !Connect(lpszHostAddress, nHostPort))
return false; m_file = new CSocketFile(this);
readArchive = new CArchive(m_file, CArchive::load);
writeArchive = new CArchive(m_file, CArchive::store); return true;
}//此函数用来发送命令
void CCmdSocket::writeCommand(const CString& command)
{
CString s;
// write command
int n = command.Find(">");

s = command.Mid(0, n + 1) +command.Mid(n + 1);
writeArchive->WriteString(s + "\n");
writeArchive->Flush();}
命令command发给一个server,server会马上返回一个数值,由于发给server带了自动的功能,所以该数据在下一次变化是会自动返回一个新的数值,而不需要在发送一次command给server,现在的问题就是如何自动接受这些后来的数据呢?
VC中有没有类似BC中socket的onread事件?

解决方案 »

  1.   

    VC中有没有类似BC中socket的onread事件?
    ----------------
    有的。你这个类 CCmdSocket 是继承的?还是自己封装的?如果是继承的CAsyncSocket,可以看下CAsyncSocket::OnReceive()
    如果是自己封装的,就需要自己获取socket上可读事件,然后读出来。
      

  2.   

    用CSocket或CAsyncSocket的OnReceive()事件就可以自动接收
      

  3.   

    CCmdSocket是继承CSocket的,而且我也使用了onreceive(),,但是在调试中发现,调用writecommand函数后,程序完全没有调用OnReceive函数,直接就结束了,不知道哪里有问题了?
      

  4.   

    CCmdSocket是继承CSocket的,而且我也使用了onreceive(),,但是在调试中发现,调用writecommand函数后,程序完全没有调用OnReceive函数,直接就结束了,不知道哪里有问题了?
    ---------------------服务器发送来数据包。
    client才会激发读事件。OnReceive才会被调用。