读书人

CSocket的OnReceive没有响应代码如上

发布时间: 2012-08-03 00:12:14 作者: rapoo

CSocket的OnReceive没有响应,代码如下?

C/C++ code
==========================================================程序启动时执行:    if (FALSE==AfxSocketInit())    {        AfxMessageBox("AfxSocketInit Failed");    }==========================================================class CDlgServerDlg中定义一个成员CServerSocket Server;类的定义:CServerSocket::CServerSocket(void){    }CServerSocket::~CServerSocket(void){    }void CServerSocket::OnReceive(int nErrorCode){        AfxMessageBox("OnReceive");    CString strTmp("");    strTmp.GetBuffer(1000);    m_WorkSocket.Receive((void*)(strTmp.GetBuffer(0)),10);    m_RcvQueue.push(strTmp);    AfxMessageBox(strTmp);    CSocket::OnReceive(nErrorCode);}void CServerSocket::OnAccept(int nErrorCode){        if (FALSE==Accept(m_WorkSocket))    {        AfxMessageBox("Accept Failed");    }    else    {        AfxMessageBox("Accept Successed");    }    CSocket::OnAccept(nErrorCode);}=====================================================================void CDlgServerDlg::OnBnClickedOk(){    if (FALSE==Server.Create(5000,SOCK_STREAM))    {        AfxMessageBox("Create Failed");    }    if (FALSE==Server.Listen(5))    {        AfxMessageBox("Listen Failed");    }}=====================================================================


[解决办法]
m_WorkSocket.Receive((void*)(strTmp.GetBuffer(0)),10);
改为 Receive((void*)(strTmp.GetBuffer(0)),10);试试

[解决办法]
我程序在办公室电脑上,接收没问题的!

你先检查套接字初始化是不是完整正确,然后要注意strTmp.GetBuffer(1000);

一般定义的字符数组末尾要加 0
[解决办法]
accept,接收到的SOCKET做保存了没有,你的ACCEPT能进去么?
你用的异步接收还是啥玩意,代码不全,多贴点

读书人网 >VC/MFC

热点推荐