CSocket的OnReceive沒有響應,代碼如下?



==========================================================
程序啟動時執行:
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");
}
}
=====================================================================

8 个解决方案

#1


當客戶端連接時可以響應OnAccept,但響應不了OnReceive,客戶端那邊是一連接成功就開始發送數據的,不知道為什么不響應OnReceive,之前我想在控制台程序中用CSocket,結果連OnAccept都不響應,我想是因為控制台沒有消息循環的關系吧,於是放在對話框中,像上面那樣,終於可以響應OnAccept,但發數據不響應OnReceive,發送端返回的結果沒有出錯報告,求解釋

#2


 m_WorkSocket.Receive((void*)(strTmp.GetBuffer(0)),10);
改為 Receive((void*)(strTmp.GetBuffer(0)),10);試試

#3


我程序在辦公室電腦上,接收沒問題的!

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

一般定義的字符數組末尾要加 0

#4


accept,接收到的SOCKET做保存了沒有,你的ACCEPT能進去么?
你用的異步接收還是啥玩意,代碼不全,多貼點

#5


套接字初始化檢察沒問題:

if (FALSE==AfxSocketInit())
{
AfxMessageBox("AfxSocketInit Failed");
}

Accept可以進去,異步接收,

#6



class CServerSocket : public CSocket
{
public:
CServerSocket(void);
public:
virtual ~CServerSocket(void);
public:
CSocket m_WorkSocket;
str_queue m_RcvQueue;
public:
virtual void OnReceive(int nErrorCode);
public:
virtual void OnAccept(int nErrorCode);
};

代碼基本就這些了

#7


2樓的方法試了,沒效果

#8


同求

注意!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系我们删除。



 
粤ICP备14056181号  © 2014-2021 ITdaan.com