socket通信流程及Delphi里ClientSocket和ServerSocket

上传人:daj****de2 文档编号:172144201 上传时间:2022-12-01 格式:DOCX 页数:7 大小:23.47KB
返回 下载 相关 举报
socket通信流程及Delphi里ClientSocket和ServerSocket_第1页
第1页 / 共7页
socket通信流程及Delphi里ClientSocket和ServerSocket_第2页
第2页 / 共7页
socket通信流程及Delphi里ClientSocket和ServerSocket_第3页
第3页 / 共7页
点击查看更多>>
资源描述
Delphi里Clientsocket和ServerSocket标签:delphisocket|字号订阅2011-07-2720:55:44|分类:Delphi|ClientSocket和ServerSocket几个重要的属性:需要一致才能互相通信client和server都有port属性,client有Address属性,使用时填写对方(server)的IP地址几个重要的事件:client:OnRead事件,当client受到冲击消息时在OnRead事件中可以获得server发送过来消息。Server:OnClientRead事件,与上述client的作用相同发送信息:clien使用SocketClient1.Socket.SendBuf(char类型的数组,信息长度);server使用SocketServer1.Socket.Connection0.SendBuf(char类型的数组,信息长度);接收信息clien使用SocketClient1.Socket.ReceiveBuf(char类型的数组,信息长度);server使用SocketServer1.Socket.Connection0.ReceiveBuf(char类型的数组,信息长度);使用socketsSocket控件让你建立一个利用TCP/IP和有关的协议与其他系统进行通信的应用。使用Sockets,你能够读和写通过它连接的其他机器,而不用担心实际的网络软件的相关细节0Sockets提供基于TCP/IP协议的连接。除此以外还能很好的工作,在其他相关的协议。Delphi提供你写网络服务器或客户应用程序去读和写其他的系统。一个服务或客户程序通常专注于一个单一的服务如超文本传送协议(HTTP)或文件传输协议(FTP)。使用serversockets,一个应用程序可以提供这些服务中的一个去连接一个希望使用服务的客户程序。Clientsockets允许一个应用使用这些服务中的一个去连接提供这个服务的服务应用。使用sockets去写应用程序,你必须理解下面这些知识:一、服务工具当你需要写网络服务或客户应用时,Sockets提供一种接合。对于许多服务,象HTTP或FTP,第三方服务商提供这些服务已经相当有效。有些甚至随着操作系统捆绑而来,以便不用你自己写。然而,当你想更多的控制服务的实现,如想让你的应用程序与网络通信更加紧密,或当没有一个服务能提供你特殊需要的服务时,你可能想建立你自己的服务或客户应用。例如,工作在分布式datasets时,你可能想为数据库写一层与其他系统通信的应用。想使用Sockets实现一个服务,你必须理解:1服务协议在你写一个网络服务或客户程序前,你必须明白你的应用将提供或使用什么服务。你的网络应用必须支持许多服务的标准协议。如果你为标准的服务例如HTTP,FTP写网络应用,你必须先理解与其他系统通信所使用的协议。特殊服务细节你必须看提供的或使用的文档。如果你的应用程序提供一个新的服务与其他系统通信,第一步是为这个服务的服务端和客户端设计通信协议。什么信息将发送?如何整理这些信息?如何对这些信息进行编码?应用程序通信经常的,你的网络服务端或客户端应用程序要提供一层在网络软件和一个应用之间使用的服务。例如,一个HTTP服务站点在INternet与一个Web服务应用之间为HTTP请求信息提供内容和应答。在你的网络应用(或客户应用)和网络软件之间Sockets提供一个接口。你必须提供一个接口,在你的应用程序与应用间使用。你可以拷贝第三方服务商提供的标准API(例如ISAPI),或你可以设计和发布你自己的API.2理解服务和端口许多标准服务都有关联的、指定的端口号。当执行服务时,你可以为服务考虑一个端口号。如果你实现一个标准服务,Windowssocketobjects提供一些方法让你为服务寻找端口号。如果提供一个新的服务,在基于Windows95或NT机器上,你能够在文件Services中为你的服务指定一个相关联的端口号。设置Services文件的更多信息请看微软的WindowsSockets文档。二、Socket连接的类型Socket连接可以分成三个基本的类型,它们反映了如何开始连接和本地Socket连接是什么。这三个类型是:1客户端连接客户端连接是一个本地系统的客户端socket与一个远程系统上的服务端Socket连接。客户端连接由客户端Socket开始。首先,客户端Socket必须描述它想连接到的服务端Socket.接着客户端socket查找服务端socket,当找到服务器时,就要求连接。服务端socket可能不能完成正确的连接。服务器sockets维持一个客户端请求队列,在他们有时间时完成连接。当服务端socket接受客户端连接,服务端socket将向它想连接的客户socket发送一个完整的描述,客户端的连接完成。2倾听连接服务器socket不会去定位客户端,代替的,他们形成被动的,半连接状态,倾听来自客户端的请求。服务器sockets形成一个队列,存放它们听到的连接请求。这个队列记录着客户端连接请求就象他们已连接进来一样。当服务器sockets同意客户连接请求时,它形成一个新的socket去连接客户端,因此这个倾听连接能保持开放状态允许其他客户端请求。3.服务端连接当倾听socket同意一个客户端请求时,服务器端socket形成一个服务器连接。当服务器端同意连接时,向客户端发送一个服务端socket描述以完成连接,当客户端socket收到这个描述时这个连接得到确认,连接完成。一但连接到客户端的Socket完成,服务端连接就不能识别从一个客户端来的连接。末端双方有同样的能力去接收同样的事件类型。只有倾听(listening)连接是根本不同的,它只有一个单一的末端。三、sockets描述Sockets让你的网络应用软件通过网络与其他系统进行通信。在网络连接中每个socket可以看成一个终端点。它有一个指定的地址。*这个系统正在运行*它理解的接口类型*用来连接的端口一个完整的socket连接描述,你必须提供sockets在连接两端的地址。在你开始一个socket连接前,你必须完整的描述你想得到的连接。有些信息可以从你的应用软件运行的系统平台上得到。例如,你不需要描述一个客户端socket的本地IP地址-这个信息可以从操作系统上获得。你必须提供你工作所依靠的socket的类型的信息。客户端socket必须描述他们想连接的服务器。侦听服务器sockets必须描述他们提供反应的服务器的端口。一个socket连接终端的完整描述包括两部分:1.IP地址主机是这样一个系统,它运行着包含有socket的应用程序。你必须描述主机给socket,通过给出主机的IP地址来完成这个描述。IP地址是一个有四个数字(byte)值的,在标准internet点付内的字符串。例如123.197.1.2一个简单的系统可以支持多于一个的IP地址。IP地址通常难于记忆并且容易打错。一个可供选择的方法是使用主机名。主机名就是IP地址的别名,它就是你常看到的统一资源定位(URLs)。它是一个字符串,包括了域名和服务。例女口许多内部网提供给主机的名字对应的系统IP地址是internetIP地址。在windows95和NT机器上,如果一个主机名不能用,你可以在HOSTS文件中为你的本地IP地址(这个本地IP地址应该是指你想连接的主机IP地址-zyqsj)建立一个进入的名字。关于HOSTS文件的更多信息请看WINDOWSSOCKETS的文档。服务器sockets不需要指定主机。本地IP地址可以从系统中读到。如果本地系统支持多于一个的IP地址,服务器sockets将同时在所有的IP地址上侦听客户端请求。当一个服务器socket同意一个连接,客户端提供一个远程IP地址。客户sockets必须指定远程主机通过提供主机名或者IP地址。在主机名和IP地址间作一个选择许多应用软件使用一个主机名去指定一个系统。主机名容易记住和容易检查排版错误。进一步讲,服务器能改变系统或与IP地址关联的特殊的主机名。使用一个主机名,能够允许客户端通过主机名描述找到抽象的站点,即使主机使用一个新的IP地址。如果主机名是未知的,客户socket必须指定服务器系统使用的IP地址。通过给一个IP地址来指定服务器将更快。当你提供主机名时,socket在定位服务器系统前,必须搜寻与这个主机名相关的IP地址。2.端口号虽然IP得地址提供了足够的信息去找到socket连接中位于另一端的系统,你通常还需要指定那个系统的端口号。没有端口号,一个系统在同一时间只能进行一个单一的连接。端口号是唯一标识那允许一个独立系统连接到支持同时多个连接的主机,每个连接都必须指定一个端口号。在网络应用中,对于服务器工具来说端口号是一个数字代码。有一个习惯就是侦听服务连接到他们自己固定的端口号上,以便他们能找到客户端sockets.服务器socket监听为他们提供服务的相关端口号。当他们允许给予一个客户端socket连接时,他们创建一个独立的socket连接,使用不同的专用的端口号。通过这个方法,能持续的监听相关服务的端口号。客户端socket使用一个专用的本地端口号,就不用其他的socket去寻找它们。他们指定他们想连接的服务器端socket的端口号,这样他们就能找到服务器应用程序。常常的,这个端口号是通过命名想连接的服务来间接指定的。四、使用socket控件Delphi提供两个socket控件,客户端sockets和服务器sockets.他们允许你的网络应用构成连接其他的机器和允许你通过这个连接来读写信息。与每个socket控件相关联的是windowssocket对象,它们在终端的的作用是一个实际的socket连接。socket控件使用windowssocket对象去封装windowssocketAPI调用,所以你的应用不用去关心连接建立的细节或管理socket信息。如果你想利用windowssocketAPI调用或自定义连接细节socket控件提供了便利,你可以使用windowssocket对象的properies,events和方法。1.使用客户端sockets添加一个客户端socket控件(TClientSocket)到你的form或datamodule使你的应用成为一个TCP/IP客户。客户sockets允许你指定你想连接的服务器socket和你希望服务器提供的服务。一但你描述你想得到的连接,你可以使用客户socket控件去完成连接服务。每个客户socket控件使用独立的客户windowssocket对象(TClientWinSocket)去应答连接中的客户终端。使用客户sockets去:A. 指定想得到的服务客户socket控件有一个数字properties,允许你指定想连接的服务器系统和端口。你可以通过主机名来指定服务器系统,使用Hostproperty。如果你不知道主机名,或者你关心找到服务器的速度,你可以指定服务器系统的IP地址,通过使用Addressproperty。你必须指定IP地址和主机名中的一个。如果你两个都指定,客户socket控件将使用主机名。除服务器系统外,你必须指定你的客户socket将连接的在服务器系统上的端口。你能够直接使用Portproperty来指定服务端口号。或者直接在Serviceproperty使用想得到的服务的名字。如果你指定端口号和服务名,客户socket控件将使用服务名。B. 建立连接一旦你在客户socket控件中完成了设置描述你想连接的服务器的属性,你就可以进行连接,通过调用Open方法。如果你想你的应用启动时自动建立连接,在设计时设置Activeproperty为true,通过使用ObjectInspector来设置。C. 取得关于连接的信息完成连接到服务器socket后,你可以使用与你的客户socket控件相关的客户windowssocketobject去取得关于连接的信息。使用Socketproperty去访问clientwindowssocketobject。windowssocketobject有一个properties,它能让你确定在连接的两端客户和服务器使用的地址和端口号。当使用一个windowssocketAPI调用时,你可以使用SocketHandleproperty区获得socket连接使用的handie。你可以使用Handleproperty去访问windows,以便接收来自socket连接的信息。AsyncStylesproperty决定哪种信息类型是windowshandie要接收的。D. 关闭连接当你完成通讯想关闭socket连接时,你能够通过调用Close方法来关闭连接。连接可能要由服务器端来关闭。如果是这种情况,你将收到一个OnDisconnect事件的通知。2.使用服务器sockets添加一个服务端socket控件ServerSocket到你的form或datamodule使你的应用成为一个TCP/IP服务器。服务器sockets允许你指定你想提供的服务或你想用来监听客户请求时使用的端口。你可以使用服务器socket控件去监听和允许客户连接请求。每个服务器socket控件使用一个单一的服务器windowssocketObject(TServerWinSocket)去应答在服务器端监听到的连接。它通常使用一个服务器客户winodwssocketObject(TServerClientWinSocket)应答在服务器端每个活动的,连接着得到允许服务的客户socketo使用服务器sockets去:A.指定端口在你的服务器socket能够监听客户请求之前,你必须指定一个端口给你的监听服务。你可以使用Portproperty来指定这个端口。如果你的服务器应用提供一个标准的服务,这个服务使用一个习惯使用的相关联的端口。你能够使用Serviceproperty直接指定端口号。使用Serviceproperty是一个好的主意,能够减少设置端口号时的错误。如果你既指定了Portproperty,又指定了Serviceproperty,服务socket将使用服务名。B.监听客户请求一旦你在serversocket控件上设置好你的端口号,你就能够通过在运行时通过调用Open方法来监听一个连接。如果你希望你的应用程序能够在启动的时候自动监听连接,在设计的时候通过使用ObjectInspector设置Active属性为true。C.连接到客户端。当监听服务socket控件接收到一个客户端连接请求时他们将自动接受这个请求。当你没次收到通知时,OnClientConnetc事件将发生。D.取得关于连接的信息一但你的服务器socket打开了监听连接,你能够使用与你服务器socket控件相关联的服务器windowssocketobject来取得关于连接的信息。使用Socketproperty去访问serverwindowssocketobject。windowssocketobject有一个属性能够让你找到关于所有活动的客户socket连接这些客户socket是你通过服务器socket控件允许连接的。使用Handle属性去存取windows通过socket连接收到的信息每个活动的,连接到客户应用是通过服务、客户windowssocketbject(TServerClientWinSocket)封装的。你能够通过serverwindowssocketobject的连接属性来访问所有的这些。这些serverclientwindowssocketobject有些属性让你能够决定哪些地址和端口号给连接的两端-客户和服务器socket使用。当你使用windowssocketAPI调用时,可以使用SocketHandle属性去获得socket连接使用的handie。你能够使用Handle属性去访问windows从socket连接处得来的信息。AsyncStyles属性决定windowshandle将接收哪种类型的信息。E. 关闭连接当你决定关闭监听连接时,调用Close方法。这将关闭所有打开着的,连接到客户应用的连接,取消任何尚未同意的连接,接着关闭监听连接以便你的服务socket控件不在接受任何新的连接。当客户端关闭他们自己独立的连接到你的serversocket的连接时,你可以在OnClientDisconnect事件中得到讯息。
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 办公文档 > 解决方案


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!