📄 d106.bmp.txt
字号:
这里需要注意的是,CArchive对象只能单向传递数据:载入(接收)或者存储(发送)。
在某些情况下,用户必须使用两个CArchive对象,一个进行数据接收,一个进行数据发送。
具体的数据的传输过程如图3-22所示。
aR器 li户
CArchive CSocketFile CSocket lIl CSocket CSocketFile CArchive
呼K
接收数据
I
CArchive CSocketFile CSocket I CSocket CSocketFile CArchive
刚n
接收数据 网络; 发送数据
图3-22数据在CArchive、CSocketFile和CSocket对象间的传输过程
对于套接字而言,CArchive对象与CSocketFile对象相关。CSocketFile对象连接一个
CSocket对象,一个CArchive对象将负责管理一个缓冲区,它特别为CSocket提供的
IsBufferEmpty成员函数。当storing(发送)CArchive对象的缓冲区被填满时,相关的CSocketFile
对象将缓冲区的内容取走,当loading(接收)CArchive对象的缓冲区被填满时,将接收数
据的通告可能祓无线延迟,此时CSocketFile对象停止读出直到缓冲区可用。
3.4.2开发步骤
本节通过一个实例来具体介绍基于CSocket类的网络编程应用,具体程序源代码见随书
光盘“Chapter 3\Example 6\”。
下面通过一个Visual C++环境下编写的客户机/服务器模式的网络应用程序,实现对
CSocket类的派生和应用。
(1)利用MFCAppWizard生成程序框架
建立基于对话框构架的应用程序,填写工程名为“LANChat”。由于调用CSocket类需
要用到头文件afxsock.h,所以在第2步(Step 2)中选中“Windows Socket”复选框,其他
接受默认的MFC AppWizard设置即可,或者在stdafx.h中添加#include <afxsock.h>。这个与
3.3.2节介绍的实例的情况相同,在这里就不再具体说明了。
(2)增加控件对象
1)向主对话框添加控件。
该应用程序是客户机/服务器一体的,因此主对话框设计内容如下:一组(两个)单
选按钮(Radio Button)控件来指定应用程序是作为客户机还是服务器而运行;一组编辑
框(Edit Box)用于输入计算机服务器侦听的端口号;为丁输入字符串和显示的字符串,
/06
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -