当前位置:编程学习 > VB >>

如何利用Winsock控件编写自己的Internet程序

 

 

VB自带的Winsock控件是一个非常强大的工具,利用它你可以在你的程序中使用各种Internet协议。如果你对网络协议及计算机之间通信的原理有所了解的话,理论上讲你可以编写任何Internet程序。本文向你介绍如何使用Winsock控件以及如何通过它来使用几乎所有的Internet协议,例如 HTTP (WWW), FTP, NNTP (News), SMTP和POP3 (Mail).

 

让我们先来看看两台计算机通信的模型。一台是客户机,另一台是服务器。

 

所有必需的软件被装在客户端计算机上。客户端计算机可以收发电子邮件信息,浏览WWW网页,参加新闻组讨论以及通过FTP从服务器上下载文件。这些软件共存于一台机中并相互影响。

 

另一种软件被安装在服务器上。这类软件向远程客户端计算机提供服务。服务器可同时响应多个客户计算机的服务请求。换句话说,服务器能在同一时间扮演几个服务器的程序,如FTP服务器, WWW服务器和邮件服务器。

 

由于Socket技术,使得同时稳定运行几个Internet应用程序成为可能。Socket在MS Windows中的应用被称为Windows Socket或干脆叫Winsock. Socket是一个程序设备,它允许你通过TCP/IP端口为某个网络应用程序接收或发送数据。程序可按需要产生足够数量的Socket,但是一个Socket必须对应一个TCP/IP端口。

 

客户端计算机产生一个socket并随机分配给它一个TCP/IP端口,该socket就利用这个端口来进行工作。但在服务器端,却不是这样做的。作为一条规则,服务器端的应用程序是用预先定义好的TCP/IP端口来工作。比如说:FTP服务器的端口号为21,WWW服务器的端口号为80. 下表列出了常用协议的默认端口号

 

协议 端口号 描述

SMTP 25 Simple Mail Transfer Protocol 

POP3 110 Post Office Protocol

NNTP 119 Network News Transfer Protocol

FTP 21 File Transfer Protocol

HTTP 80 Hyper Text Transfer Protocol 

 

客户端计算机与服务器是通过其中一个网络协议来开始网络进程的。客户机首先产生一个socket并利用它来同服务器建立连接。socket取得服务器的地址及要进行连接的端口号。对Winsock控件来讲,你必须用它的Connect方法。下面这个代码表示同一个FTP服务器进行连接。

 

Winsock1.Connect "ftp.microsoft.com", 21

 

正如你所见,该方法包括两个参数,第一个是远程服务器的名称或IP地址。第二个是端口号,它规定了你想从远程服务器那里获得哪种服务。在这里,21号端口是FTP服务器正在侦听的端口号。所谓侦听就是说服务器应用程序等待来自21号端口的客户机的服务请求。如果连接成功,Winsock控件会产生一个Connect事件。

 

接下来的事件根据你使用的网络协议不同而不同。

 

服务器等待你的命令 (HTTP)

根据所使用的协议,服务器发送所要求的数据并断开连接

服务器向客户端计算机发送欢迎信息及代码(FTP, SMTP, POP3, NNTP),表示服务器现在等待接收你的命令

服务器向客户端计算机发送不能维持现有连接的消息及代码(FTP, SMTP, POP3, NNTP)

在连接期间,服务器会向客户端计算机发送消息,而我们要做的就是接收并处理这些消息。在Winsock控件中,主要通过其DataArrival事件来进行。

 

Dim strData As String

Winsock1.GetData strData

 

上面的最后一行代码的作用是从缓冲中读取服务器传来的数据并储存在strData变量中。然后你就可以根据需要处理信息了。

 

同服务器建立连接并从服务器处获得第一条消息后,你就可以通过向服务器发送命令及等待其响应的形式同服务器进行通话了。下面是一个同MS FTP服务器进行通话的例子。

 

Client: Tries to make connection with ftp.microsoft.com (port 21)

Server: Accepts connection and sends first response to client

Server: 220 ftp Microsoft FTP Service (Version 3.0).

Client: USER anonymous

Server: 331 Anonymous access allowed, send identity (e-mail name) as password.

Client: PASS gdal@comset.net

Server: 230 Anonymous user logged in.

Client: CWD developr

Server: 250 CWD command successful.

 

为了向服务器发送数据,你需要用到SendData方法,下面是一个发送上面例子中第一条命令的例子:

 

Winsock1.SendData "USER anonymous" & vbCrLf

 

所有的命令,规则及命令顺序都可在RFC (request for commants)文件中找到。

 

协议 RFC 地址

SMTP  821 http://www.faqs.org/rfcs/rfc821.html

POP3  1725 http://www.faqs.org/rfcs/rfc1725.html

NNTP 977 http://www.faqs.org/rfcs/rfc977.html

FTP  959 http://www.faqs.org/rfcs/rfc959.html

HTTP  2068 http://www.faqs.org/rfcs/rfc2068.html

 

每个协议都有自己的一套命令及回应。尽管如此,你在开发程序时

补充:软件开发 , Vb ,
CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,