求解:关于CSocket问题,十分不解,[服务端接收不到已经已由客户端发到服务端的包]
问题:服务端已经和客户端建立好了Socket连接,而且客户端已经成功向服务端发送包,服务端已经收到,但是,当客户端发送一定量包后,服务端就开始收不到任何响应,但通过win2000的网络监视器已经肯定客户的包已经通过网络发到了服务器,但是服务端软件却没有收到这个包,而且以后所有的包都只能发到服务器,但是服务端收不到。
请求问题的原因?
附:现使用网络类实现定义及函数(服务端和客户端使用相同的网络通讯类CCommSocket)
////CommSocket.h
class CCommSocket : public CSocket
{
public:
CSocketFile* m_pFile;
CArchive* m_pArchiveIn;
CArchive* m_pArchiveOut;
CString m_strText;
CStringList m_msgList;
public:
CCommSocket();
virtual ~CCommSocket();
virtual void Serialize(CArchive& ar);
// 初始化客户Socket
void InitSocket(void);
// 客户接收信息
void ReceiveMsg(void);
// 向客户发送消息
void SendMsg(CString& strText);
virtual void OnReceive(int nErrorCode);
};
///////////CommSocket.cpp
#include "stdafx.h"
#include "CommSocket.h"
// CCommSocket
CCommSocket::CCommSocket()
{
m_pFile = NULL;
m_pArchiveIn = NULL;
m_pArchiveOut = NULL;
m_strText = _T("");
m_msgList.RemoveAll();
}
CCommSocket::~CCommSocket()
{
if (m_pArchiveOut != NULL)
delete m_pArchiveOut;
if (m_pArchiveIn != NULL)
delete m_pArchiveIn;
if (m_pFile != NULL)
delete m_pFile;
}
void CCommSocket::InitSocket(void)
{
m_pFile = new CSocketFile(this);
m_pArchiveIn = new CArchive(m_pFile, CArchive::load);
m_pArchiveOut = new CArchive(m_pFile, CArchive::store);
}
void CCommSocket::Serialize(CArchive& ar)
{
if (ar.IsStoring())
{ // storing code
ar<<m_strText;
}
else
{ // loading code
ar>>m_strText;
}
m_msgList.Serialize(ar);
}
void CCommSocket::ReceiveMsg(void)
{
Serialize(*m_pArchiveIn);
}
void CCommSocket::SendMsg(CString &strText)
{
if (m_pArchiveOut != NULL)
{
m_strText = strText;
Serialize(*m_pArchiveOut);
m_pArchiveOut->Flush();
}
}
void CCommSocket::OnReceive(int nErrorCode)
{
CSocket::OnReceive(nErrorCode);
}
^^^^^^^^^^^^^^^^^^^^^^^^^^^问题出在这里,这里就是显示收不到包