网络编程(语言DELPHI)

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
Socket 工作过程 在 TCP/IP 网络中两个进程间的相互作用的主机模式是客户机/服务器模式(Client/Servermodel),
客户机/服务器模式在操作过程中采取的是主动请示方式: 服务器方的工作过程如下。 (1) 打开一通信通道并告知本地主机,它愿意在某一个公认地址上接收客户请求。 (2) 等待客户请求到达该端口。 (3) 接收到客户端服务请求,处理该请求并发送应答信号,等待客户端连接。
由于这两个控件在 Delphi 7 中只以类的形式出现,所以在应用之前需要让用户自己创建该类的实例 并初始化,方法如下。
ClientSocket:TClientSocket; //声明客户端套接字控件 ServerSocket:TServerSocket; //声明服务器端套接字控件 ClientSocket:=TClientSocket.Create(Self); //创建客户端套接字控件实例 //客户端套接字控件实例属性设置 ClientSocket.Active:=False; ClientSocket.Address:='127.0.0.1'; ClientSocket.ClientType:=ctNonBlocking; //非堵塞式工作方式 ClientSocket.Port:=1024; … //客户端套接字控件实例指定事件 ClientSocket.OnDisconnect:=ClientSocketDisconnect; ClientSocket.OnRead:=ClientSocketRead; ClientSocket.OnError:=ClientSocketError; … ServerSocket:=TServerSocket.Create(Self); //创建服务器端套接字控件实例 //创建服务器端套接字控件实例属性设置 ServerSocket.Active:=False; ServerSocket.Port:=1024; ServerSocket.ServerType:=stNonBlocking; //非堵塞式工作方式 … //创建服务器端套接字控件实例指定事件处理 ServerSocket.OnClientConnect:=ServerSocketClientConnect;
网络通信协议服务界面(如:TCP/IP)
Windows
物理层通信介质
TCP/IP 协议及特点 1. TCP/IP 体系结构 TCP/IP 协议实际上就是在物理网上的一组完整的网络协议。其中 TCP 是提供传输层服务,而 IP 则
是提供网络层服务。TCP/IP 协议簇(如图 1 所示)包括协议如下。 (1) IP:网间协议(Internet Protocol)。此协议负责主机间数据的路由和网络上数据的存储。同时
Recv( )/Send( )交换数据
Closesockeห้องสมุดไป่ตู้( )关闭该连接
Closesocket( )关闭该连接
使用 Delphi 网络控件 TClientSocket 控件和 TServerSocket 控件
TServerSocket 和 TClientSocket 涵盖了基本的 WinSocket 编程,其中 TServerSocket 作为服务器 方使用,TClientSocket 作为客户端使用,这两个控件本身并不提供 Socket 连接,但是它们都有一个 Socket 属性,这个属性才提供了 Socket 连接。
Socket( )方法请求连接 Connect( )方法建立连接 Recv( )/Send( )交换数据 Closesocket( )关闭该连接
服务器端 Secket( )方法建立套接字
客户端 Socket( )方法请求连接
Bind( )方法绑定本机 IP
Bind( )方法绑定服务端 IP
Recv( )/Send( )交换数据
网络地址 (4) ICMP:网间报文控制协议(Internet Control Message Protocol)。此协议处理信关和主机的差
错和传送控制。 (5) TCP:传送控制协议(Transmission Control Protocol)。这是一种提供给用户进程的可靠的全双
工字节流面向连接的协议。它要为用户进程提供虚电路服务,并为数据可靠传输建立检查(注:大多数网 络用户程序使用 TCP)。
Socket 网络编程 Delphi 语言
掌握网络编程的基本原理 掌握网络控制的使用方法 具备通过使用网络控制开发简单网络应用程序的能力
Delphi 的 Socket 编程概述 Socket 是建立在传输层协议(主要是 TCP 和 UDP)上的一种套接字规范,它定义两台计算机间进行通
信的规范(即一种编程规范),如果说两台计算机是利用一个“通道”进行通信,那么这个“通道”的两端 就是两个套接字。套接字屏蔽了底层通信软件和具体操作系统的差异,使得任何两台安装了 TCP 协议软件 和实现了套接字规范的计算机之间的通信成为可能。
(6) UDP:用户数据报协议(User Datagram Protocol)。这是提供给用户进程的无连接协议,用于传 送数据而不执行正确性检查。
(7) FTP:文件传输协议(File Transfer Protocol)。此协议允许用户以文件操作的方式(文件的增、 删、改、查、传送等)与另一主机相互通信。
在 Delphi 中,其底层的 Socket 也应该是 Windows 的 Socket。Socket 减轻了编写计算机间通信软件 的难度。Inprise 在 Delphi 中对 Windows Socket 进行了有效的封装,使用户可以很方便地编写网络通信 程序。
用户端程序
客户端程序
Windows Sockets
应用程序 1
应用程序 2
应用程序 3
网络应用程序界面(Socket)
TCP/IP 核心协议
物理介质
如图 2 Socket 套接字
1. Socket Socket 是网络的基本构件,它是可以被命名和寻址的通信端点,使用中的每一个套接字都有其类型
和一个与之相连接的进程。 2. 基本套接字方法 在 Socket 编程规范中定义了许多套接字方法,为了更好地理解套接字编程原理,下面介绍几个基本
服务器端 Socket()方法建立套接字
客户湍
Bind()方法绑定本机 IP
Listen( )监听客户端
Accept( )方法接受连接 Accept( )方法建立连接 Recv( )/Send( )交换数据 Closesocket( )关闭该连接
Closesocket( )关闭服 (2) 无连接协议的套接字调用时序。
为 ICMP,TCP,UDP 提供分组发送服务,用户进程通常不需要涉及这一层。 (2) ARP:地址解析协议(Address Resolution Protocol)。此协议将网络地址映射到硬件地址。 (3) RARP:反向地址解析协议(Reverse Address Resolution Protocol)。此协议将硬件地址映射到
(4) 返回第二步,等待另一客户请求。 (5) 接受客户端连接,建立新的套接字,并在该套接字上传输数据。 (6) 关闭套接字。 (7) 关闭服务器。 客户方工作过程如下。 (1) 打开一通信通道,并连接到服务器所在主机的特定端口。 (2) 向服务器发送服务请求报文,等待并接收应答;继续提出请求。 (3) 请求结束后关闭通信通道并终止。 上述客户机/服务器模式工作过程用套接字方法描述如下。 服务器(Server)方首先用 Socket( )方法新建一个 Socket 连接,然后用 Bind( )方法使该连接同服务 器地址绑定,Listen( )方法使该连接处于监听状态,一旦监听到客户请求便调用 Accept( )方法处理连接 请求并等待客户建立连接,连接建立成功后通过 send( )与 recv( )在该连接上交换数据,最后通过 closesocket( )方法关闭套接字。 客户机(Client)方首先用 Socket( )方法新建一个 Socket 连接,然后通过 Connect( )方法连接到特 定 的 服 务 器 , 并 与 该 服 务 器 建 立 连 接 , 通 过 send( ) 与 recv( ) 在 该 连 接 上 交 换 数 据 , 最 后 通 过 closesocket( )方法关闭套接字。 (1) 面向连接的套接字的系统调用时序。
的套接字方法。 1) 创建套接字——socket( ) 功能:使用前创建一个新的套接字 格式:SOCKETPASCALFARsocket(intaf,inttype,intprocotol); 参数:af:通信发生的区域 type:要建立的套接字类型 procotol:使用的特定协议 2) 指定本地地址——bind( ) 功能:将套接字地址与所创建的套接字号联系起来。 格式:intPASCALFARbind(SOCKETs,conststructsockaddrFAR*name,intnamelen); 参数:s:是由 socket( )调用返回的并且未作连接的套接字描述符(套接字号)。 其他:如果没有错误,bind( )返回 0,否则返回 SOCKET_ERROR 3) 建立套接字连接——connect( )和 accept( ) 功能:共同完成连接工作 格式:intPASCALFARconnect(SOCKETs,conststructsockaddrFAR*name,intnamelen); SOCKETPASCALFARaccept(SOCKETs,structsockaddrFAR*name,intFAR*addrlen); 参数:同上 4) 监听连接——listen( ) 功能:用于面向连接服务器,表明它愿意接收连接。 格式:intPASCALFARlisten(SOCKETs,intbacklog); 5) 数据传输——send( )与 recv( ) 功能:数据的发送与接收 格式:intPASCALFARsend(SOCKETs,constcharFAR*buf,intlen,intflags); intPASCALFARrecv(SOCKETs,constcharFAR*buf,intlen,intflags); 参数:buf:指向存有传输数据的缓冲区的指针。 6) 多路复用——select( ) 功能:用来检测一个或多个套接字状态。 格式:intPASCALFARselect(intnfds,fd_setFAR*readfds,fd_setFAR*writefds, fd_setFAR*exceptfds,conststructtimevalFAR*timeout); 参数:readfds:指向要做读检测的指针 writefds:指向要做写检测的指针 exceptfds:指向要检测是否出错的指针 timeout:最大等待时间 7) 关闭套接字——closesocket( ) 功能:关闭套接字 格式:BOOLPASCALFARclosesocket(SOCKETs);
(8) SMTP:简单邮件传送协议(Simple Mail Transfer Protocol)。SMTP 协议的作用是为系统之间传 送电子邮件。
(9) Telnet:终端协议(Telnet Terminal Procotol)。允许用户以虚终端方式访问远程主机 (10) HTTP:超文本传输协议(Hypertext Transfer Procotol) (11) TFTP:简单文件传输协议(Trivial File Transfer Protocol)
FTP
SMTP
Telnet
HTTP
TFTP
FTP
FTP
ICMP
IP
ARP
RARP
硬件接口
如图 1 2. TCP/IP 特点 TCP/IP 协议的核心部分是传输层协议(TCP、UDP),网络层协议(IP)和物理接口层,这三层通常是在 操作系统内核中实现。因此用户一般不涉及。编程时的编程界面有两种形式:其一是由内核心直接提供的 系统调用;其二是使用以库函数方式提供的各种函数。前者为核内实现,后者为核外实现。用户服务要通 过核外的应用程序才能实现,所以网络编程要使用套接字(Socket)来实现,如图 2 所示是 TCP/IP 协议核 心与应用程序关系图。
相关文档
最新文档