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能进去么?
你用的异步接收还是啥玩意,代码不全,多贴点