客户端发送若干条信息后,出现不能发送或不能接收的有关问题
客户端发送若干条信息后,出现不能发送或不能接收的问题用的是《Visual C++实践与提高-网络编程》里的第5章的
客户端发送若干条信息后,出现不能发送或不能接收的问题 用的是《Visual C++实践与提高-网络编程》里的第5章的SERVER和CLIENT的例子,用它里面已经编译好的程序没问题,但是把源代码在VS2010里转换后编译运行后,就出现了标题上所述的问题。编译时有以下信息(但没有错误,可以运行): _WIN32_WINNT not defined. Defaulting to _WIN32_WINNT_MAXVER (see WinSDKVer.h) warning C4996: 'CWinApp::Enable3dControlsStatic': CWinApp::Enable3dControlsStatic is no longer needed. You should remove this call. 1> d:\microsoft visual studio 10.0\vc\atlmfc\include\afxwin.h(5347) : 参见“CWinApp::Enable3dControlsStatic”的声明 这是为什么呢?[解决办法] 加一句: #define _WIN32_WINNT 0x0500 试试?[解决办法] 这个警告没事,就是程序判断操作系统的版本不合适,不改也可以运行,也可以按1楼的加上. 至于不能发送或不能接收的问题,和这个警告没关系,你还是检测通信代码看看是不是有缺陷[解决办法]
引用: 加一句: #define _WIN32_WINNT 0x0500 试试? 试过了警告没了但是问题依然存在
[解决办法] 检查2010的字符集设置是否有关系。
[解决办法] MSDN:
In MFC 5.0, Enable3dControls and Enable3dControlsStatic are obsolete because their functionality is incorporated into Microsoft's 32-bit operating systems.
32位系统不兼容这个功能,你的书肯定比较老,当时可能16位系统还在用。
要么把这句注视掉吧,或者把警告等级降低。
[解决办法] 引用: 检查2010的字符集设置是否有关系。 字符集是设置为多字节,这样对吗
[解决办法] 这是客户端的发送函数
void CClientDlg::SendMsg(CString& strText)
{
if (m_pArchiveOut!=NULL)
{
CMsg msg;
//消息预处理
//表明消息的来源
msg.m_strText=m_strHandle+_T(":")+strText;
TRY
{
//发送消息
msg.Serialize(*m_pArchiveOut);
//将CArchive对象中数据强制存储到CSocketFile对象中
m_pArchiveOut->Flush();
}
CATCH(CFileException,e)
{
//错误处理
m_bAutoChat=FALSE;
m_pArchiveOut->Abort();
delete m_pArchiveOut;
m_pArchiveOut=NULL;
CString strTemp;
strTemp="服务器重置连接!";
DisplayMsg(strTemp);
}
END_CATCH
}
}
[解决办法] 这是客户端的接收函数
void CClientDlg::ReceiveMsg()
{
CMsg msg;
TRY
{
//接收消息
msg.Serialize(*m_pArchiveIn);
while (!msg.m_msgList.IsEmpty())
{
CString strTemp;
//获取消息内容
strTemp=msg.m_msgList.RemoveHead();
//显示消息
DisplayMsg(strTemp);
}
}
CATCH(CFileException,e)
{
//错误处理
m_bAutoChat=FALSE;
msg.m_bClose=TRUE;
m_pArchiveOut->Abort();
CString strTemp;
strTemp="服务器重置连接!";
DisplayMsg(strTemp);
strTemp="连接关闭!";
DisplayMsg(strTemp);
}
END_CATCH
if (msg.m_bClose)
{
//处理服务器关闭的消息
delete m_pArchiveIn;
m_pArchiveIn=NULL;
delete m_pArchiveOut;
m_pArchiveOut=NULL;
delete m_pFile;
m_pFile=NULL;
delete m_pSocket;
m_pSocket=NULL;
}
}