::OnReceive()死也触发不了,已按各位的办法从CAsyncSocket派生了一个类
我按高手的做法已从CAsyncSocket派生了一个类oksocket,手动添加了一个oksocket::snd()函数用来发送数据,然后重写了oksocket::OnReceive(),现在触发oksocket::snd()函数能成功发出数据但就是没见到oksocket::OnReceive()触发;
这是头文件:
class oksocket : public CAsyncSocket
{
public:
oksocket();
virtual ~oksocket();
virtual void OnReceive(int nErrorCode);
CAsyncSocket *newsocket;
void oksocket::snd();
//CAsyncSocket *nnewsocket=new CAsyncSocket;
};
以下是CPP文件:
oksocket::oksocket()
{
//好像不能将下面三句放在这里?!
//oksocket *newsocket=new oksocket;
//newsocket->Create(9002,SOCK_DGRAM);
//newsocket->Bind(9002);
}
oksocket::~oksocket()
{
}
// oksocket 成员函数
void oksocket::OnReceive(int nErrorCode)
{
// TODO: 在此添加专用代码和/或调用基类
oksocket *newsocket=new oksocket;
newsocket->Create(9002,SOCK_DGRAM);
newsocket->Bind(9002);
char buff[300];
CString port2;
UINT addr2;
int rec=newsocket->ReceiveFrom(buff,300,port2,addr2);
rec++;
if(rec>0)
AfxMessageBox("OK");
newsocket->Close();
CAsyncSocket::OnReceive(nErrorCode);
}
void oksocket::snd()
{
oksocket *newsocket=new oksocket;
newsocket->Create(9002,SOCK_DGRAM);
newsocket->Bind(9002);
int rec=newsocket->SendTo("ttt",4,9002,"127.0.0.1");
rec++;
newsocket->Close();
}
我不知道为何将oksocket *newsocket=new oksocket; newsocket->Create(9002,SOCK_DGRAM); newsocket->Bind(9002);这三行代码放在构造函数中编译时总循环在这个断点,程序运行时也会提示“内存不足”,所以每个语句都生成了一个实例,是不是这里的原因?