远程服务支持库

远程服务支持库 帮助手册20080820版 返回支持库手册 返回首页

该支持库提供对服务器端程序和客户端程序的支持。客户端发出请求，服务器端接受到客户端的请求后，就会执行事先设置好的触发函数，在触发函数的方法中就可以分析用户端的请求，然后计算出结果发回给相应的客户端。该支持库的服务器模型支持多用户多任务，内部采用多个线程池协调同步共同完成任务数据的发送接收。本支持库一般可以使用在网络服务中间件，远程调用服务器，分布式计算等等程序的开发过程中。

操作系统支持： Windows、Linux

其它数据类型：

远程服务

请求客户端

例程列表：

例程名称 | 下载 | 说明
远程调用客户端演示程序 | 客户端.e | 本客户端可以通过远程调用的方式从服务器端获取并处理数据库数据。
应用服务器演示 | 网络数据库中间件.e 公司职员.edb | 本服务器为远程客户端提供数据库数据。

适用版本，远程服务支持库 （1.2#1版）


远程服务

远程服务 普通类型 操作系统支持：Windows、Linux 跳至：远程服务支持库

该数据类型提供对服务器端程序的支持。

方法：

启动 | 停止 | 置线程池大小 | 取请求文本
取请求字节集 | 发送文本 | 发送字节集 | 取客户句柄
取客户IP | 取客户数 | 取客户数组 | 断开连接
取消息类型 |  |  |

参见： 基本数据类型


启动 方法 操作系统支持：Windows、Linux 所属对象：远程服务

服务参数配置完毕后，即可以启动服务。服务启动后，就可以对客户端请求做出相应地回复。该方法执行成功返回真，执行失败返回假。

语法： 逻辑型 远程服务．启动 （端口号，处理函数，［运行方式］）

参数名 | 描 述
端口号 | 必需的；整数型。本参数作为服务启动的端口号。
处理函数 | 必需的；子程序指针。本参数作为服务器端接收到客户请求后，系统自动执行的函数。在该函数内分析客户的请求信息，并且计算结果后将结果返回给客户端。该函数带有一个整形参数，参数的内容是客户端发送过来的请求信息的地址，可以通过该地址得到请求信息的完整内容。
运行方式 | 可选的；逻辑型。本参数作为服务程序的处理函数是否可以并行处理每一个客户端的请求。该参数为真代表处理函数可以并行处理每一个客户端的请求，这种方式下，服务器的性能可以最好的发挥出来，最大可能的支持更多的客户端访问和最快速的响应，这是默认的方式。该参数为假代表处理函数必须串行处理每一个客户端的请求，这种方式下，服务器的性能受到一定的限制，优点是不会发生由于客户端对服务器的并发访问而引起的并发冲突。

例程：

说明：

在启动服务器前要先设置服务器能够处理的线程的范围。要注意服务器处理数据的方式。

参见： 远程服务端 远程客户端


停止 方法 操作系统支持：Windows、Linux 所属对象：远程服务

停止正在工作的服务程序。由于要释放大量的系统资源，该方法执行过程中会有一点延时，应尽量避免在该方法执行过程中，强制关闭主程序。为了正确使用该方法，建议把该方法放在程序的主线程中，同步执行该方法和关闭主程序。决对禁止没有停止服务就直接关闭主程序，如果没有停止服务就关闭主程序会出现大量的内存资源泄露，甚至会出现非法错误。使用该数据类型时一定要注意这一点。

语法： 无返回值 远程服务．停止 （）

例程：

说明：

在程序结束之前一定要先关闭服务，否则将发生内存错误。


置线程池大小 方法 操作系统支持：Windows、Linux 所属对象：远程服务

设置每一个线程池内的线程数量的最大值和最小值，该项设置必须在服务器启动之前设置。服务系统拥有四个线程池，一个接收线程池一个发送线程池还有两个处理线程池，该方法是设置每一个线程池内的允许线程数量。由于线程池内的线程数量是可以随环境的变化而增加或减少的，所以该方法也就是设置线程池内的线程数量的变化区间，系统会根据该设置取最优化的值。如果不进行该项设置，系统将采用默认的设置，即最小线程数量为5，最大线程数量为20。设置成功返回真，失败返回假。

语法： 逻辑型 远程服务．置线程池大小 （最小线程数，最大线程数）

参数名 | 描 述
最小线程数 | 必需的；整数型。线程池内的线程数量的最小值。
最大线程数 | 必需的；整数型。线程池内的线程数量的最大值。

例程：

说明：

本方法要在启动服务前设置。理论上设置的线程范围从1到无限，这就要看计算机硬件的配置和系统的设置。

如果要处理的数据量超过线程的设置数目，多出的数据将在内存中暂时保存，按照到达先后排队等候处理。


取请求文本 方法 操作系统支持：Windows、Linux 所属对象：远程服务

取得客户发出的请求信息文本。如果正确得到客户的请求信息，该方法返回真，否则返回假。

语法： 逻辑型 远程服务．取请求文本 （请求信息地址，客户代码，请求信息）

参数名 | 描 述
请求信息地址 | 必需的；整数型。客户端发送过来的请求信息的地址。“取请求文本”方法必须在用户定义的“处理函数”中调用，所以该值就是“处理函数”的参数值。
客户代码 | 必需的；文本型，参数数据只能提供变量。服务器所接收的请求信息来源，该代码唯一标识客户端的一次请求，禁止修改它的值。该参数作为方法“取请求文本”的返回值。
请求信息 | 必需的；文本型，参数数据只能提供变量。服务器所接收到的请求信息的详细内容。该参数作为方法“取请求文本”的返回值。

例程：

说明：

获取客户端发送的文本信息。客户端发送的数据都将在“服务”子程序中处理。


取请求字节集 方法 操作系统支持：Windows、Linux 所属对象：远程服务

取得客户发出的请求信息字节集。如果正确得到客户的请求信息，该方法返回真，否则返回假。

语法： 逻辑型 远程服务．取请求字节集 （请求信息地址，客户代码，请求信息）

参数名 | 描 述
请求信息地址 | 必需的；整数型。客户端发送过来的请求信息的地址。“取请求字节集”方法必须在用户定义的“处理函数”中调用，所以该值就是“处理函数”的参数值。
客户代码 | 必需的；文本型，参数数据只能提供变量。服务器所接收的请求信息来源，该代码唯一标识客户端的一次请求，禁止修改它的值。该参数作为方法“取请求字节集”的返回值。
请求信息 | 必需的；字节集，参数数据只能提供变量。服务器所接收到的请求信息的详细内容。该参数作为方法“取请求字节集”的返回值。

例程：

说明：

获取客户端发送的字节集信息。客户端发送的数据都将在“服务”子程序中处理。


发送结果文本 方法 操作系统支持：Windows、Linux 所属对象：远程服务

发送文本 方法 操作系统支持：Windows、Linux 所属对象：远程服务

服务程序发送文本数据到客户端。该方法执行成功返回真，失败返回假。

语法： 逻辑型 远程服务．发送文本 （目的端，发送信息）

参数名 | 描 述
目的端 | 必需的；通用型。该参数可以接受两种不同的数据，一个是“请求代码”，一个是“客户句柄”，这两种数据都可以作为服务程序发送数据的目的端，当参数为“请求代码”时，发送的目的端就是该请求代码的来源。
发送信息 | 必需的；文本型。服务器所要发送的文本形式的信息。

例程：

说明：

处理完数据后，向客户端发送一个文本信息。


发送结果字节集 方法 操作系统支持：Windows、Linux 所属对象：远程服务

发送字节集 方法 操作系统支持：Windows、Linux 所属对象：远程服务

服务程序发送字节集数据到客户端。该方法执行成功返回真，失败返回假。

语法： 逻辑型 远程服务．发送字节集 （目的端，发送信息）

参数名 | 描 述
目的端 | 必需的；通用型。该参数可以接受两种不同的数据，一个是“请求代码”，一个是“客户句柄”，这两种数据都可以作为服务程序发送数据的目的端，当参数为“请求代码”时，发送的目的端就是该请求代码的来源。
发送信息 | 必需的；字节集。服务器所要发送的字节集形式的结果信息。

例程：

说明：

处理完数据后，向客户端发送一个字节集信息。


取客户IP 方法 操作系统支持：Windows、Linux 所属对象：远程服务

取客户句柄 方法 操作系统支持：Windows、Linux 所属对象：远程服务

根据客户的请求信息地址取得客户的句柄。成功取得客户句柄，返回真，如果客户已经不可用或其他意外情况发生，返回假。

语法： 逻辑型 远程服务．取客户句柄 （请求信息地址，客户句柄）

参数名 | 描 述
请求信息地址 | 必需的；整数型。客户端发送过来的请求信息的地址。“取客户句柄”方法必须在用户定义的“处理函数”中调用，所以该值就是“处理函数”的参数值。
客户句柄 | 必需的；整数型，参数数据只能提供变量。服务器所接收到的信息来源的客户句柄。该参数作为方法“取客户句柄”的返回值。

例程

说明

取得对应发送数据的客户的句柄。每个客户句柄只对应一个客户的IP地址，每个客户的IP地址可以有多个句柄。


取客户 IP 方法 操作系统支持：Windows、Linux 所属对象：远程服务

根据客户的句柄值取得客户的IP地址。成功取得客户的IP地址，返回真，如果客户已经不可用或其他意外情况发生，返回假。

语法： 逻辑型 远程服务．取客户IP （客户句柄，客户IP地址）

参数名 | 描 述
客户句柄 | 必需的；整数型。客户端的句柄值。
客户IP地址 | 必需的；文本型，参数数据只能提供变量。客户端的IP地址。该参数作为方法“取客户IP”的返回值。

例程

说明

根据客户发送数据的句柄获得该客户的IP地址。


取客户数 方法 操作系统支持：Windows、Linux 所属对象：远程服务

取得当前连接到服务器的客户端数量。该方法正确执行，返回大于等于0的整数值，如果发生错误返回-1。

语法： 整数型 远程服务．取客户数 （）

例程

说明

该方法取得的客户数也就是所有连接到服务端的客户IP 地址数，不是客户的句柄数。

参见：远程服务端 远程客户端


取客户数组 方法 操作系统支持：Windows、Linux 所属对象：远程服务

取得当前连接到服务器的所有客户端的句柄。该方法执行成功返回真，执行失败返回假。

语法： 逻辑型 远程服务．取客户数组 （客户句柄数组）

参数名 | 描 述
客户句柄数组 | 必需的；整数型，参数数据只能提供变量数组。连接到当前的服务程序的所有客户端的句柄数组，该参数作为“取客户数组”的返回值。

例程

说明

取得当前连接到服务器的所有客户端的句柄数。

参见：远程服务端 远程客户端


断开连接 方法 操作系统支持：Windows、Linux 所属对象：远程服务

断开与一个客户的连接。

语法： 无返回值 远程服务．断开连接 （客户句柄）

参数名 | 描 述
客户句柄 | 必需的；整数型。欲断开的客户端的句柄。

例程

说明

根据列表框中选择的客户IP地址，断开与某位客户的连接。

参见：远程服务端 远程客户端


取消息类型 方法 操作系统支持：Windows、Linux 所属对象：远程服务

取得触发服务端处理函数的消息类型。有客户连接到服务端返回0，有客户主动或意外断开与服务端的连接返回1，客户端发送字节流到服务器返回2，出错返回-1。

语法： 整数型 远程服务．取消息类型 （消息地址）

参数名 | 描 述
消息地址 | 必需的； 整数型。触发服务器端处理函数的消息地址。

例程：

说明：

通过命令取得与客户的消息类型。


请求客户端

请求客户端 普通类型 操作系统支持：Windows、Linux 跳至：远程服务支持库

该数据类型提供对客户端程序的支持。

方法：

连接 | 断开 | 同步发送文本 | 同步发送字节集
异步发送文本 | 异步发送字节集 | 取返回文本 | 取返回字节集
取消息类型 |  |  |

参见： 基本数据类型


连接 方法 操作系统支持：Windows、Linux 所属对象：请求客户端

连接到指定地址和端口号的服务器。连接成功返回真，连接失败返回假。

语法： 逻辑型 请求客户端．连接 （端口号，服务器地址，请求方式，［接收函数］）

参数名 | 描 述
端口号 | 必需的；整数型。本参数作为欲连接的服务器的端口号，该值的取值范围在0到65535之间。
服务器地址 | 必需的；文本型。本参数是欲连接的服务器的IP地址，也可以是服务器的域名或者是内网的计算机名。
请求方式 | 必需的；逻辑型。本参数作为客户端的请求方式，该值为真代表客户端采用同步的请求方式，这时忽略该方法的最后一个参数，该值为假代表客户端采用异步的请求方式。同步方式不能发送异步请求，同样异步方式不能发送同步请求。
接收函数 | 可选的；子程序指针。客户端向服务器发送异步请求后，当客户端接收到服务器返回的结果，该函数就会自动被系统调用执行。该函数有一个整形的参数，该参数代表服务器返回的结果地址，客户端可以通过该地址得到返回的结果内容。

例程：

说明：

连接到服务器。注意发送数据的方式。


断开 方法 操作系统支持：Windows、Linux 所属对象：请求客户端

切断与服务器的连接。

语法： 无返回值 请求客户端．断开 （）

例程：

说明：

断开与服务器的连接。


同步发送文本 方法 操作系统支持：Windows、Linux 所属对象：请求客户端

在客户端发送同步请求文本到服务器，当收到服务器返回的结果后，该方法才返回，否则为阻塞状态直到超时。如果该方法正确执行并接收到服务器返回的结果，该方法返回1。如果在超时时间内没能接收到服务器的返回结果，该方法返回0。如果出现其他错误没能接收到服务器的返回结果，该方法返回-1。

语法： 整数型 请求客户端．同步发送文本 （请求文本，结果文本，超时）

参数名 | 描 述
请求文本 | 必需的；文本型。客户端发送的请求文本的内容。
结果文本 | 必需的；文本型，参数数据只能提供变量。服务器返回的结果内容。
超时 | 必需的；整数型。同步机制下“发送请求”方法的最大允许等待时间。单位为毫秒。该值必须大于等于0。

例程：

说明：

用同步的方式发送文本。


同步发送字节集 方法 操作系统支持：Windows、Linux 所属对象：请求客户端

在客户端发送同步请求字节集到服务器，当收到服务器返回的结果后，该方法才返回，否则为阻塞状态直到超时。如果该方法正确执行并接收到服务器返回的结果，该方法返回1。如果在超时时间内没能接收到服务器的返回结果，该方法返回0。如果出现其他错误没能接收到服务器的返回结果，该方法返回-1。

语法： 整数型 请求客户端．同步发送字节集 （请求字节集，结果字节集，超时）

参数名 | 描 述
请求字节集 | 必需的；字节集。客户端发送的请求字节集的内容。
结果字节集 | 必需的；字节集，参数数据只能提供变量。服务器返回的结果内容。
超时 | 必需的；整数型。同步机制下“发送请求”方法的最大允许等待时间。单位为毫秒。该值必须大于等于0。

例程：

说明：

用同步的方式发送字节集。


异步发送文本 方法 操作系统支持：Windows、Linux 所属对象：请求客户端

客户端发送异步请求文本到服务器，发送完毕后，该方法立刻返回。该方法执行成功返回真，执行失败返回假。

语法： 逻辑型 请求客户端．异步发送文本 （请求信息）

参数名 | 描 述
请求信息 | 必需的；文本型。客户端发送的请求信息的内容。

例程：

说明：

异步发送数据时，要在“连接”子程序中接收服务端返回的数据。


异步发送字节集 方法 操作系统支持：Windows、Linux 所属对象：请求客户端

客户端发送异步请求字节集到服务器，发送完毕后，该方法立刻返回。该方法执行成功返回真，执行失败返回假。

语法： 逻辑型 请求客户端．异步发送字节集 （请求信息）

参数名 | 描 述
请求信息 | 必需的；字节集。客户端发送的请求信息的内容。

例程：

说明：

异步发送数据时，要在“连接”子程序中接收服务端返回的数据。


取返回文本 方法 操作系统支持：Windows、Linux 所属对象：请求客户端

在异步的请求方式下，取得服务器返回的结果。如果正确取得服务器的返回结果，该方法返回真，否则，该方法返回假。

语法： 逻辑型 请求客户端．取返回文本 （结果信息地址，结果信息）

参数名 | 描 述
结果信息地址 | 必需的；整数型。服务器发送回来的结果信息的地址。“取返回文本”方法必须在用户定义的“接收函数”中调用，所以该值就是“接收函数”的参数值。
结果信息 | 必需的；文本型，参数数据只能提供变量。客户端得到的服务器返回的结果信息，该参数作为方法“取返回文本”的返回值。

例程：

说明：

异步发送数据时，要在“连接”子程序中接收服务端返回的文本数据。


取返回字节集 方法 操作系统支持：Windows、Linux 所属对象：请求客户端

在异步的请求方式下，取得服务器返回的结果。如果正确取得服务器的返回结果，该方法返回真，否则，该方法返回假。

语法： 逻辑型 请求客户端．取返回字节集 （结果信息地址，结果信息）

参数名 | 描 述
结果信息地址 | 必需的；整数型。服务器发送回来的结果信息的地址。“取返回字节集”方法必须在用户定义的“接收函数”中调用，所以该值就是“接收函数”的参数值。
结果信息 | 必需的；字节集，参数数据只能提供变量。客户端得到的服务器返回的结果信息，该参数作为方法“取返回字节集”的返回值。

例程：

说明：

异步发送数据时，要在“连接”子程序中接收服务端返回的字节集数据。


取消息类型 方法 操作系统支持：Windows、Linux 所属对象：请求客户端

取得触发客户端处理函数的消息类型。该方法必须在客户端的触发函数中调用。如果服务器关闭或者与客户的连接意外断开返回0，如果客户端接收到数据返回1，出错返回-1。

语法： 整数型 请求客户端．取消息类型 （消息地址）

参数名 | 描 述
消息地址 | 必需的； 整数型。触发客户端处理函数的消息地址。

例程：

说明：

通过命令取得与服务器之间的消息类型。


系统基本数据类型列表及其说明如下：

1. 字节型。可容纳 0 到 255 之间的数值。

2. 短整数型。可容纳 -32,768 到 32,767 之间的数值，尺寸为 2 个字节。

3. 整数型。可容纳 -2,147,483,648 到 2,147,483,647 之间的数值，尺寸为 4 个字节。

4. 长整数型。可容纳 -9,223,372,036,854,775,808 到 9,223,372,036,854,775,807 之间的数值，尺寸为 8 个字节。

5. 小数型。可容纳 3.4E +/- 38 (7位小数) 之间的数值，尺寸为 4 个字节。

6. 双精度小数型。可容纳 1.7E +/- 308 (15位小数) 之间的数值，尺寸为 8 个字节。

7. 逻辑型。值只可能为“真”或“假”，尺寸为 2 个字节。“真”和“假”为系统预定义常量，其对应的英文常量名称为“true”和“false”。

8. 日期时间型。用作记录日期及时间，尺寸为 8 个字节。

9. 文本型。用作记录一段文本，文本由以字节 0 结束的一系列字符组成。

10.字节集。用作记录一段字节型数据。字节集与字节数组之间可以互相转换，在程序中允许使用字节数组的地方也可以使用字节集，或者相反。字节数组的使用方法，譬如用中括号对（“[]”）加索引数值引用字节成员，使用数组型数值数据进行赋值等等，都可以被字节集所使用。两者之间唯一的不同是字节集可以变长，因此可把字节集看作可变长的字节数组。

11.子程序指针。用作指向一个子程序，尺寸为 4 个字节。具有此数据类型的容器可以用来间接调用子程序。参见例程 sample.e 中的相应部分。

    在以上的基本数据类型中，字节型、短整数型、整数型、长整数型、小数型、双精度小数型被统称为“数值型”，它们之间可以任意转换。不过编程需要注意转换可能带来的精度丢失。譬如：将整数 257 转换为字节后的结果为 1 ，这是因为值 257 超出了字节型数据的最大上限 255 ，从而产生了溢出。

    另外，通用型数据类型仅在系统内部使用，它能够匹配所有的系统基本数据类型、库定义数据类型、自定义数据类型。