已阅读5页,还剩2页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
Delphi 里 ClientSocket 和 ServerSocket 2011-07-27 20:55:44| 分类: Delphi | 标签:delphi socket |字号 订阅 ClientSocket 和 ServerSocket 几个重要的属性: 1.client 和 server 都有 port 属性,需要一致才能互相通信 2.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 类型的数组,信息长 度); 使用 sockets Socket 控件让你建立一个利用 TCP/IP 和有关的协议与其他系统进行通信的应用。 使用 Sockets,你能够读和写通过它连接的其他机器,而不用担心实际的网络 软件的相关 细节。Sockets 提供基于 TCP/IP 协议的连接。除此以外还能很好的工作,在其他相关的协 议。 Delphi 提供你写网络服务器或客户应用程序去读和写其他的系统。一个服务或客户 程序通常专注于一个单一的服务如超文本传送协议(HTTP)或文件传输协议 (FTP)。使用 server sockets,一个应用程序可以提供这些服务中的一个去连接一个希望使用服务的 客户程序。Client sockets 允许一个应用使用这些服务中的一个去连接提供这个服务 的服务应用。 使用 sockets 去写应用程序,你必须理解下面这些知识: 一、服务工具 当你需要写网络服务或客户应用时,Sockets 提供一种接合。对于许多服务,象 HTTP 或 FTP,第三方服务商提供这些服务已经相当有效。有些甚至随着操作系统捆绑而来, 以便不用你自己写。然而,当你想更多的控制服务的实现,如想让你的应用程 序与网络通 信更加紧密,或当没有一个服务能提供你特殊需要的服务时,你可能想建立你自己的服务 或客户应用。例如,工作在分布式 data sets 时,你可能想为数据库写一层与其他 系统通信的应用。想使用 Sockets 实现一个服务,你必须理解: 1.服务协议 在你写一个网络服务或客户程序前,你必须明白你的应用将提供或使用什么服务。你 的网络应用必须支持许多服务的标准协议。如果你为标准的服务例如 HTTP,FTP 写网络应 用,你必须先理解与其他系统通信所使用的协议。特殊服务细节你必须看提供的或使用的 文档。 如果你的应用程序提供一个新的服务与其他系统通信,第一步是为这个服务的服务 端和客户端设计通信协议。什么信息将发送?如何整理这些信息?如何对这些信息进行编 码? 应用程序通信 经常的,你的网络服务端或客户端应用程序要提供一层在网络软件和一个应用之间使 用的服务。例如,一个 HTTP 服务站点在 INternet 与一个 Web 服务应用之间为 HTTP 请 求信息提供内容和应答。 在你的网络应用(或客户应用)和网络软件之间 Sockets 提供一个接口。你必须 提供一个接口,在你的应用程序与应用间使用。你可以拷贝第三方服务商提供的标准 API(例如 ISAPI),或你可以设计和发布你自己的 API. 2.理解服务和端口 许多标准服务都有关联的、指定的端口号。当执行服务时,你可以为服务考虑一个端 口号。如果你实现一个标准服务,Windows socket objects 提供一些方法让你为服 务寻找端口号。如果提供一个新的服务,在基于 Windows 95 或 NT 机器上,你能够在 文件 Services 中为你的服务指定一个相关联的端口号。设置 Services 文件的更多信息请 看微软的 Windows Sockets 文档。 二、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 点付内的字符串。 例如 一个简单的系统可以支持多于一个的 IP 地址。IP 地址通常难于记忆并且容易打错。 一个可供选择的方法是使用主机名。主机名就是 IP 地址的别名,它就是你常看到的统一资 源定位(URLs)。它是一个字符串,包括了域名和服务。 例如 许多内部网提供给主机的名字对应的系统 IP 地址是 internetIP 地址。在 windows95 和 NT 机器上,如果一个主机名不能用,你可以在 HOSTS 文件中为你的本地 IP 地址 (这个本地 IP 地址应该是指你想连接的主机 IP 地址-zyqsj)建立一个进入的名字。 关于 HOSTS 文件的更多信息请看 WINDOWS SOCKETS 的文档。 服务器 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 控件相关联 的是 windows socket 对象,它们在终端的的作用是一个实际的 socket 连接。socket 控件使用 windows socket 对象去封装 windows socket API 调用,所以你的 应用不用去关心连接建立的细节或管理 socket 信息。 如果你想利用 windows socket API 调用或自定义连接细节,socket 控件提供了 便利,你可以使用 windows socket 对象的 properies,events 和方法。 1.使用客户端 sockets 添加一个客户端 socket 控件(TClientSocket) 到你的 form 或 data module 使你 的应用成为一个 TCP/IP 客户。客户 sockets 允许你指定你想连接的服务器 socket 和你希 望服务器提供的服务。一但你描述你想得到的连接, 你可以使用客户 socket 控件去完成 连接服务。 每个客户 socket 控件使用独立的客户 windows socket 对象(TClientWinSocket)去 应答连接中的客户终端。使用客户 sockets 去: A.指定想得到的服务 客户 socket 控件有一个数字 properties,允许你指定想连接的服务器系统和端口。你 可以通过主机名来指定服务器系统,使用 Host property。 如果你不知道主机名,或者你关心找到服务器的速度,你可以指定服务器系统的 IP 地址,通过使用 Address property。你必须指定 IP 地址和主机名中的一个。 如果你两个都指定,客户 socket 控件将使用主机名。除服务器系统外,你必须指定 你的客户 socket 将连接的在服务器系统上的端口。你能够直接使用 Port property 来 指定服务端口号。或者直接在 Service property 使用想得到的服务的名字。如果你指定 端口号和服务名,客户 socket 控件将使用服务名。 B.建立连接 一旦你在客户 socket 控件中完成了设置描述你想连接的服务器的属性,你就可以进 行连接,通过调用 Open 方法。如果你想你的应用启动时自动建立连接,在设计时设置 Active property 为 true,通过使用 Object Inspector 来设置。 C.取得关于连接的信息 完成连接到服务器 socket 后,你可以使用与你的客户 socket 控件相关的客户 windows socket object 去取得关于连接的信息。使用 Socket property 去访问 client windows socket object。 windows socket object 有一个 properties,它能让你确定在连接的两端客户和服 务器使用的地址和端口号。 当使用一个 windows socket API 调用时,你可以使用 SocketHandle property 区获得 socket 连接使用的 handle。你可以使用 Handle property 去访问 windows,以便接 收来自 socket 连接的信息。 AsyncStyles property 决定哪种信息类型是 windows handle 要接收的。 D.关闭连接 当你完成通讯想关闭 socket 连接时,你能够通过调用 Close 方法来关闭连接。连接 可能要由服务器端来关闭。如果是这种情况,你将收到一个 OnDisconnect 事件的通知。 2.使用服务器 sockets 添加一个服务端 socket 控件 ServerSocket 到你的 form 或 data module 使你的应用 成为一个 TCP/IP 服务器。服务器 sockets 允许你指定你想提供的服务或你想用来监听客 户请求时使用的端口。你可以使用服务 器 socket 控件去监听和允许客户连接请求。每个 服务器 socket 控件使用一个单一的服务器 windows socket Object(TServerWinSocket) 去应答在服务器端监听到的连接。它通常使用一个服务器客户 winodws socket Object(TServerClientWinSocket)应答在服务器端每个活动的,连接着得到允许服务的客户 socket。使用服务器 sockets 去: A.指定端口 在你的服务器 socket 能够监听客户请求之前,你必须指定一个端口给你的监听服务。 你可以使用 Port property 来指定这个端口。如果你的服务器应用提供一个标准的服务, 这个服务使用一个习惯使用的相关联的端口。你能够使用 Service property 直接指定端 口号。使用 Service property 是一个好的主意,能够减少设置端口号时的错误。如果你 既指定了 Port property,又指定了 Service property,服务 socket 将使用服务名。 B.监听客户请求 一旦你在 server socket 控件上设置好你的端口号,你就能够通过在运行时通过调 用 Open 方法来监听一个连接。如果你希望你的应用程序能够在启动的时候自动监听连接, 在设计的时候通过使用 Object Inspector 设置 Active 属性为 true。 C.连接到客户端。 当监听服务 socket 控件接收到一个客户端连接请求时他们将自动接受这个请求。当 你没次收到通知时,OnClientConnetc 事件将发生。 D.取得关于连接的信息 一但你的服务器 socket 打开了监听连接,你能够使用与你服务器 socket 控件相关联 的服
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 复工培训考试题及答案
- 法院会计岗考试题及答案
- 铸造投资项目可行性研究报告
- 防火涂料施工质量检验报告(二)2025
- 2020-2025年教师资格之幼儿保教知识与能力强化训练试卷B卷附答案
- 2020-2025年国家电网招聘之电网计算机综合练习试卷B卷附答案
- 俄罗斯撕掉协议书
- 苏军轨道坠落协议书
- 儿童隐形牙齿矫正协议书
- 抵押贷款融资协议书
- 2025年中国华电招聘笔试参考题库含答案解析
- 音乐版权授权与管理方案
- 《肿瘤的分级与分期》课件
- 货物长期采购合同范例
- 2025届四川省成都市高中高三一诊考试语文试卷含解析
- 环保设施除尘器维护应急预案
- 北京市矢量地图-可改颜色
- DBJ41T 262-2021 影响城市轨道交通外部作业技术标准 河南省工程建设标准(住建厅版)
- 部编版语文四年级上册第四单元习作:我与-过一天课件-(共18张课件)
- 车位转让车位协议书模板
- DB50T 938-2019 铜梁龙舞规范
评论
0/150
提交评论