📄 d121.bmp.txt
字号:
(8)关闭连接
对按钮停止( IDC_STOP)、单击事件( BN_CLICKED)添加一个事件处理函数。编辑
该函数,代码如下:
void CLANChatDlg::OnStop0
{
// TODO: Add your control notification handler code here
if(m_bClient)
m_ChatClient.Close0;
else
{
m_pListenSocket.Close0;
m_connectionList.RemoveAll();
}
m_blnit:false;
m_sMsgList="";
m_UserName="";
SetDlgltemText(IDC_INPUTMS G," ");
SetDlgltemText(nDC_SHOWMS G," ");
UpdateData(false);
3.4.3程序调试和总结
本实例的聊天室软件的设计风格与实例4类似,这里就不再重复说明了。值得注意的有
两点:首先,设置端口号不当,可能导致服务器无法启动;其次,输入消息内容后,按下<Enter>
键即可发送消息。
3.5扩展实例:基于CSocket的网络版中国象棋
本实例是一个网络版的中国象棋的程序,在这里不其体介绍程序的实现方法,只是介绍
网络通信部分的几个关键点。
在本实例中,并没有直接应用MFC提供的CSocket类,这是因为考虑到对于类而言,其
成员函数调用必然是完全阻塞方式的,因此只能用于人工线程中。基于这种思想,可以在CObject
类基础上派生一个套接字类CBlockingSocket,其使用方式为阻塞方式,虽然增加了使用的条
件,但可以保证其正常工作,而不会出现不加控制地使用CSocket对象带来的冲突现象。
首先需要定义此套接字类,新创建的套接字功能主要通过调用CSocket的相关操作实现。
在类中设置了一个属性变量:SOCKET m_hSocket,m_hSocket表示套接字的句柄。另外还
构造了一组方法,其功能与CSocket类是对应的。下面以创建、监听、连接建立和消息的接
收和发送为例,介绍其实现方法。主要是以下5步:
1)创建。创建套接字即要求创建相应的连接,默认类型为面向连接的流。
void CBlockingSocket::Create(int nType)
/2/
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -