几种网络编程方式的比较

news/2024/11/9 12:30:30

  
几种网络编程方式的比较

一、常见的四种网络编程方式

1.ISAPI编程

ISAPI(即Internet Server Application Program Interface),是微软提供的一套面向Internet 服务的API接口,它能实现CGI(Common Gateway Interface,公共网关接口)能提供的全部功能,并在此基础上进行了扩展,如提供了过滤器应用程序接口。ISAPI的工作原理和CGI大体上是相同的,都是通过交互式主页取得用户输入信息,然后交服务器后台处理。但是二者在实现机制上大相庭径。ISAPI与CGI最大的区别在于:在ISAPI下建立的应用程序是以动态连接库(Dynamic Link Lib,DLL)的形式存在;而CGI的应用程序一般都是可执行程序。ISAPI应用的工作流程与CGI也有一些不同。ISAPI应用的DLL不仅可以象CGI程序一样被用户请求激活,还可以被系统预先激活来监视用户输入;对于被用户激活的DLL,在处理完一个用户请求后不会马上消失,而是继续驻留在内存中等待处理别的用户输入,直到过了一段时间后一直没有用户输入。一个ISAPI的DLL,可以在被用户请求激活后长驻内存,等待用户的另一个请求,还可以在一个DLL里设置多个用户请求处理函数,此外,ISAPI的DLL应用程序和WWW服务器处于同一个进程中,效率要显著高于CGI。不过ISAPI的平台兼容性较差,目前只能用于微软自己的Windows 95和NT操作系统上,服务器平台也仅限于IIS(Internet Information Server)和MS personal web server以及NT workstation上的peer web server。ISAPI DLLs的调用方法和CGI一样:在客户端使用GET或POST方法。

MFC中支持ISAPI的类有:

ChttpServer

CHttpServerContext

CHttpFilter

CHttpFilterContext

CHtmlStream

 

2.CGI编程

CGI的工作原理介绍:CGI(Common Gateway Interface)是一个WEB服务器提供信息服务的标准接口,通过这样一个接口,WEB服务器能够执行程序,并将程序输出的信息返回给浏览器。因为在WEB网上的数据都是静态的,通过CGI程序能够动态的处理浏览者的请求,如保存用户输入的信息,根据用户信息返回相关的资料等等。当客户端发送一个CGI请求给WEB服务器后,WEB服务器将根据CGI程序的类型决定数据向CGI程序的传送方式,一般来讲是通过标准输入/输出流和环境变量来与CGI程序间传递数据。CGI的输入/输出方法:CGI程序通过标准输入(STDIN)和标准输出(STDOUT)来进行输入输出,STDIN和STDOUT是两个预先定义好的文件指针。你可以利用文件读写函数来对其进行操纵。

 

3.WinInet编程

Win32 Internet 扩展提供了对普通Internet协议的访问,这些协议包括:gopher, FTP,和 HTTP,使用WinInet可以编写出高水平的Internet客户端程序,而不必去了解winsock、TCP/IP和特定Internet协议的细节。WinInet为所有三种协议提供了统一的函数集,既Win32 API接口。如果底层协议改变(如从FTP到HTTP),利用统一的函数集,用最少的代码就可以完成改变。
Visual C++ 有两种方式来使用WinInet。一种是直接调用Win32 Internet函数,另一种是使用WinInet类库。

MFC 提供了下列的类和全程函数来创建Internet客户端程序。
CInternetSession (父类 CObject)
CInternetConnection (父类 CObject)
    CFtpConnection
    CGopherConnection
    CHttpConnection
CInternetFile(父类 CStdioFile)
    CGopherFile
    CHttpFile
CFileFind(父类 CObject)
    CFtpFileFind
    CGopherFileFind
CGopherLocator(父类 CObject)
CInternetException(父类 CException)
全程函数:
AfxParseURL
AfxGetInternetHandleType
AfxThrowInternetException
这些类和全程函数除CFileFind在AFX.H里声明之外,其余都在AFXINET.H文件里声明。

 

4.Winsock编程

Winsock接口为进程间通信提供了一种新的手段,它不但能用于同一机器中的进程之
间通信,而且支持网络通信功能。随着Windows 95的推出。Winsock已经被正式集成
到了Windows系统中,同时包括了16位和32位的编程接口。而Winsock的开发工具也
可以在Borland C++4.0、Visual C++2.0这些C编译器中找到,主要由一个名为winsock.h的头文件和动态连接库winsock.dll或wsodk32.dll组成,这两种动态连接库分别用于Win16和Win32的应用程序。winsock.dll或wsodk32.dll中包含socket与WSASocket系列操作的函数。

 

二、这几种方式的区别:

1)  ISAPI主要是开发基于浏览器客户端与服务器端程序。效率比CGI方式高,而且也扩展了CGI没有的一些功能。(基于TCP/IP模型中的应用层)

2)  CGI主要是开发基于浏览器客户端与服务器端程序。(基于TCP/IP模型中的应用层)

3)  WinInet主要是开发客户端程序。(基于TCP/IP模型中的应用层)

4)  Winsock主要是基于socket来开发客户端与服务器端程序。(基于TCP/IP模型中的各层)要想开发低层协议的程序的话就要了解协议的报文格式。

 
 
 


http://www.niftyadmin.cn/n/1996511.html

相关文章

原生js计时器

闲来无事,写一个简单的计时器 <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><meta http-equiv"X-UA-Comp…

React路由配置使用

Router包安装: 安装包还是要打开命令行工具&#xff0c;使用npm来进行安装。 npm install --save react-router react-router-dom页面login: import React from react import { createHashHistory } from history// eslint-disable-next-line react/require-render-return expo…

WebBrowser编程简述

WebBrowser编程简述 引 言 这篇文章最先发表于2000年07月25日&#xff0c;最后一次修改是在2001年02月07日。这里再次贴出的目的&#xff0c;一是作为前一阶段的完结&#xff0c;所以文章中的错误都不作修改&#xff1b;二是希望作为一个新的起点。我准备整理一下至今所积累…

EXCEL中的游戏

EXCEL中的游戏EXCEL 2000:新建一个空白文件,选择"文件"菜单的"另存为WEB页...",然后在"另存为"对话框中选择"工作表"并勾选"添加交互"栏目,按"发布"后,出现"发布为WEB页"的对话框,选择"发布"…

桌面地址的注册表项

HKEY_CURRENT_USER/Software/Microsoft/Windows/CurrentVersion/Explorer/Shell Folders

[2019.2.13]BZOJ4318 OSU!

我们记\(pw3_i\)表示前\(i\)个位置,结尾为\(i\)的最长全1子串的期望长度的立方。 如果我们钦定\(p_{n1}0\),那么答案\(\sum_{i1}^npw3_i\times(1-p_{i1})\)。乘上\((1-p_{i1})\)意思是这一位要在下一位为\(0\)的时候才有贡献。 设当前位置为\(i\)。 这一位有\(p_i\)的概率为1。…

Windows外壳名字空间的浏览

Windows外壳名字空间的浏览 姜伟华 Windows95/98对Dos/Win3.x作了许多重大改进&#xff0c;在文件系统方面&#xff0c;它除了采用长文件名替代Dos中的8.3文件名以外&#xff0c;引入外壳名字空间&#xff08;Shell Name Space&#xff09;来代Dos文件系统是其又一大突破&…

webstorm初始化_WebStorm入门配置教程

如何下载WebStorm&#xff1f;去 WebStorm官方网站下载即可&#xff0c;可以免费试用 30 天。获取正版的途径付费购买WebStorm 官方报价是第一年 405 人民币第二年 323 人民币第三年之后 240 人民币2. 如果你是学生&#xff0c;可以获取免费教育版3. 如果你在 GitHub 上的项目持…