如果您无法下载资料,请参考说明:
1、部分资料下载需要金币,请确保您的账户上有足够的金币
2、已购买过的文档,再次下载不重复扣费
3、资料包下载后请先用软件解压,在使用对应软件打开
第10章Internet编程10.1用MFCWinSock类进行网络通信设计10.1.1创建套接字用两步来创建一个套接字。首先,必须创建一个CSocket对象。然后,利用Create()函数创建一个基本的套接字句柄。下面是创建连接到端口4500的套接字的例子:10.1.2连接套接字一旦创建了一个套接字,就可以同其他终点或套接字建立连接,必须使用Connect()函数来做到这一点。Connect()函数有两个参数,一个是指向SOCKADDR_IN结构的指针,一个是结构的字节尺寸。SOCKADDR_ADDR结构有下面的格式:本结构中的IP地址是IN_ADDR类型。IN_ADDR结构在Windows套接字的头文件winsock.h中定义如下:建立一个连接的最后一步是使用connect()函数。下面的代码试图连接到ftp.microsoft.com服务器。这个代码使用在前面已定义好的SOCKADDR_IN结构:10.1.3监听一个连接使用Create()函数之后,需要调用Listen()函数监听在端口上新来的连接,只有当Listen()函数响应了一个调用或有一个套接字错误发生时才会有返回。下面的代码就是监听一个连接:10.1.4读和写数据Receive()函数从远端终点读取数据,Send()函数发送数据到远端终点。例10.1Receive()函数的应用。Receive()函数的第三个可选参数指明调用建立的方式。它的值可以是下表中的标志的并集。10.2用MFCWinInet类开发应用程序10.2.2Internet客户端程序实现步骤WinInet中的CInternetSession是管理会话的类。CInternetSession的构造函数中接收六个参数:在建立会话后就可以利用CInternetSession∷OpenURL打开一个URL,并读取数据,函数原型为:本文给出的例子就是利用WinInet通过HTTP协议读取网上文件。完成这一功能的代码非常简单,当然代码中少了各种错误检测。10.3实例(3)设计界面将MicrosoftWeb浏览器控件拖入对话框中,ID为默认的"IDC_EXPLORER1"同时在Web浏览器控件的右侧放置一个命令按钮,ID为“IDC_EXPLORER_BUTTON”,标题为‘’浏览“。效果见下图(4)添加变量为Web浏览器控件添加变量“m_Explorer”,类型为CWebBrowser2。(5)添加函数为按钮添加单击事件处理函数OnExplorerButton(),代码如下(6)测试程序如你的计算机已接入Internet,当点击”浏览”按扭时,能浏览到www.163.net的主页。运行效果如下图10.3.1.2带地址栏的浏览器(1)打开上面的工程(2)添加一个静态文本,标题为地址栏;添加一个组合框,ID为IDC_COMBO1组合框的样式为Dropdown(3)给组合框添加变量“m_Address”,类型为CComboBox(4)修改浏览按钮的代码:(5)添加前进、后退功能的浏览器①打开工程,添加两个按钮,标题分别为“前进”、“后退”,对于的ID分别为“IDC_FORWAERD_BUTTON”、“IDC_BACKUP_BUTTON”②添加函数,分别给两个按钮添加处理函数OnBackupButton()、OnForwardButton()(6)添加前进、后退及刷新功能的浏览器①打开工程,添加“刷新”的按钮,其ID属性为“IDC_REFRESH_BUTTON”②添加函数,给刷新按钮添加处理单击事件的函数OnRefreshButton()10.3.2客户端应用程序主要功能:建立到服务器的连接、关闭、向服务器发送数据、从服务器接受数据(1)建立工程创建一个单文档程序,工程名为ClientNet,在MFCAppWiard-step4of6的对话框中设定windowssocket复选框为选中,单击finish按钮。(2)新建对话框①新建一个对IDD_DIALOG1的对话框。②增加如下图所示控件。控件属性列表如下所示(4)添加成员变量。利用ClassWizard添加对话框IDD_DIALOG1的成员变量,如下表10.8所示。添加第二个新的对话框IDD_DIALOG2,如下图所示(5)利用ClassWizard创建对话框IDD_DIALOG2的对话框类CSendDlg。(7)增加新类CRequest类单击菜单Insert|NewClass…打开对话框,在BaseClass中选择CSocket,在Name中输入CRequest,单击“OK”按钮。②修改CRequest类。构造函数的代码(9)初始化变量m_port:在ConnentDlg.c