有关socket接受数据问题.怎么让服务器发送一次,ReceiveData()调用一次.

来源:百度知道 编辑:UC知道 时间:2024/07/09 04:13:06
从服务端发送一次数据,下面的ReceiveData()会被调用,不会停止.程序对其他的命令没有反应了.
void CsocketCLSDlg::ReceiveData()
{
test *m_test = new test;
int rev = m_pSrv.Receive(m_test, sizeof(test));
if ( sizeof(test) != rev )
{
return;
}

TRACE("sizeof(test): %d \n", sizeof(test));
TRACE("m_test is: %d \n", m_test->get_a());

}

自定义的派生类:

class Server :
public CSocket
{
public:
Server(void);
~Server(void);
public:
void AttachDlg(CDialog * pDlg);

virtual void OnReceive(int nErrorCode);

protected:
CsocketCLSDlg * m_pDlg;

};

#include "StdAfx.h"
#include "Server.h"

Server::Server(void)
{
m_pDlg = NULL;

}

Server::~Server(void)
{
}

void Server::AttachDlg(CDialog * pDlg)
{
m_pDlg = (CsocketCLSDlg*)pDlg;
}

多线程就是解决这问题的方法之一。
也可以把socket设置成异步模式,这样就可以通过消息来判断。

我也是觉得使用API好处很多。

提一点建议
不要用 CSocket
改用api吧
好处有很多