服务器连接以及与服务器交换数据是很基础的内容,在易语言上实现起来也较为简单,我们来简单了解一下和服务器对话的原理。

理解本文必须掌握的知识:
1.明白什么是服务器且拥有自己的服务器。网上买的服务器必须有公网IP。也可使用局域网内计算机(如自家电脑),但必须在路由器上设置端口转发。
2.具有Internet的基础知识,能理解常用术语或概念(如IP,端口)。
我们先来了解一下易语言的两个窗口组件:
![图片[2]-易语言实现服务器与客户端数据互换(含简单聊天软件例程)-落叶博客](https://s1.ax1x.com/2020/04/03/GN6d0J.png)
![图片[3]-易语言实现服务器与客户端数据互换(含简单聊天软件例程)-落叶博客](https://s1.ax1x.com/2020/04/03/GN661K.png)
废话不多说我们开始教程
首先需要创建两个Windows窗口程序,在其中一个里面加入客户端组件,在第二个里面加入服务器组件
提醒:客户端组件是用于客户端软件中的,服务器组件是用于服务端软件中的!只有正确设置,服务器和客户端两个软件才能正常交换信息哦!
![图片[4]-易语言实现服务器与客户端数据互换(含简单聊天软件例程)-落叶博客](https://s1.ax1x.com/2020/04/03/GNcluD.png)
![图片[5]-易语言实现服务器与客户端数据互换(含简单聊天软件例程)-落叶博客](https://s1.ax1x.com/2020/04/03/GNcJUA.png)
创建好了之后我们需要给服务器组件配置一个端口号,这个端口号不能与服务器上的其他程序的端口号重复
如我们写:169832
![图片[6]-易语言实现服务器与客户端数据互换(含简单聊天软件例程)-落叶博客](https://s1.ax1x.com/2020/04/03/GNcyUs.md.png)
完成准备工作后我们就可以开始了
客户端事件
![图片[7]-易语言实现服务器与客户端数据互换(含简单聊天软件例程)-落叶博客](https://s1.ax1x.com/2020/04/03/GNgbwQ.png)
数据到达:服务器向客户端传输数据时触发该事件
连接断开:服务器与客户端断开连接时触发该事件
服务器事件
![图片[8]-易语言实现服务器与客户端数据互换(含简单聊天软件例程)-落叶博客](https://s1.ax1x.com/2020/04/03/GN2Ef1.png)
数据到达:客户端向服务器传输数据时触发该命令
客户进入:客户组件连接服务器时触发该命令
客户离开:客户组件断开连接时触发该命令
客户端指令
连接() BASIC
调用格式: 〈逻辑型〉 对象.连接 (文本型 服务器地址,整数型 服务器端口号) - 系统核心支持库->客户
英文名称:connect
连接到指定主机上的指定端口,该主机上的该端口必须已经被某一服务器组件监听。成功返回真,失败返回假。本命令为初级对象成员命令。
参数<1>的名称为“服务器地址”,类型为“文本型(text)”。可以为主机名、IP地址等。
参数<2>的名称为“服务器端口号”,类型为“整数型(int)”。该端口必须已经被服务器组件监听。
操作系统需求: Windows
此命令是用来连接服务器的,在执行与服务器交换数据之前,需要先连接服务器。
参数1是服务器地址,即为服务器IP地址,查看IP地址请在Windows系统下点击键盘上的Windows+R键,输入cmd,然后输入ipconfig查看本机IP
![图片[9]-易语言实现服务器与客户端数据互换(含简单聊天软件例程)-落叶博客](https://s1.ax1x.com/2020/04/03/GNgEM8.png)
![图片[10]-易语言实现服务器与客户端数据互换(含简单聊天软件例程)-落叶博客](https://s1.ax1x.com/2020/04/03/GNgZqg.png)
提醒:
这里查找到的IP地址是内网IP(内网IP通常是以192.168开头)。如果客户端代码的服务器地址参数中填写的是服务器内网IP,则只有服务器与客户端在同一个内网时(同一个路由下的计算机)可互相通信!
要想与国际互联网上的服务器通信,服务器必须具有公网IP。可以在百度中搜索“IP”查看自己计算机的公网IP哦!如果查到的公网IP与在命令提示符中查到的不一致,代表这台计算机并不是直接连入公网的。请在路由器上设置端口转发!如果您无法管理路由器后台(如您在校园网内),那您是无法用此计算机作为服务器的。
客户端可以在没有公网IP的计算机上正常运行,但服务端必须在具有公网IP的计算机上运行。客户端和服务端可以是同一台计算机。
参数2是端口号,即为我们在服务器组件的属性里写的那串数字
发送数据() BASIC
调用格式: 〈逻辑型〉 对象.发送数据 (通用型 欲发送数据) - 系统核心支持库->客户
英文名称:send
在成功建立与服务器的连接后,发送数据到服务器端组件。成功返回真,失败返回假。本命令为初级对象成员命令。
参数<1>的名称为“欲发送数据”,类型为“通用型(all)”。欲发送数据必须是系统基本数据类型。
操作系统需求: Windows
此命令用于向服务器发送数据,前提是要先使用连接()后才可以使用。
参数1为发送的数据,可以发送任何类型的数据。
取回数据() BASIC
调用格式: 〈字节集〉 对象.取回数据 () - 系统核心支持库->客户
英文名称:recv
取回所接收到的数据。本命令必须在“数据到达”事件的处理子程序中使用。本命令为初级对象成员命令。
操作系统需求: Windows
该命令没有参数,用于服务器向客户端传输数据后直接提取数据内容,可以在数据到达事件中使用,提取出来的是字节集数据。
服务器指令
取回数据() BASIC
调用格式: 〈字节集〉 对象.取回数据 () - 系统核心支持库->服务器
英文名称:recv
取回所接收到的数据。本命令必须在“数据到达”事件的处理子程序中使用。本命令为初级对象成员命令。
操作系统需求: Windows
没有参数,放在数据到达事件下可以取回客户组件发送的数据
取回客户() BASIC
调用格式: 〈文本型〉 对象.取回客户 () - 系统核心支持库->服务器
英文名称:GetClient
当接收到“客户进入”、“客户离开”或“数据到达”事件时,在该事件的处理子程序中可调用本方法取回对应的客户地址(IP地址 + 端口)。本命令为初级对象成员命令。
操作系统需求: Windows
没有参数,放在数据到达、客户进入、客户离开事件下可以取回客户数据(IP:端口)
发送数据() BASIC
调用格式: 〈逻辑型〉 对象.发送数据 (文本型 接收客户,通用型 欲发送数据,[整数型 最长等待时间]) - 系统核心支持库->服务器
英文名称:send
向指定已经连接进来的客户发送数据。成功返回真,失败返回假。本命令为初级对象成员命令。
参数<1>的名称为“接收客户”,类型为“文本型(text)”。为调用“取回客户”方法所返回的客户地址文本。
参数<2>的名称为“欲发送数据”,类型为“通用型(all)”。欲发送数据必须是系统基本数据类型。
参数<3>的名称为“最长等待时间”,类型为“整数型(int)”,可以被省略。指定等待发送成功的最长时间,单位为秒。如果省略本参数,默认为无限等待。
操作系统需求: Windows
用于服务器组件向客户组件发送数据时使用
参数1是你要发送给的用户的IP地址和端口,可用取回客户()来调取信息
参数2是要发送的数据,支持所有数据的传输
参数3可以忽略,如不想在服务器崩溃的时候给用户带来不良体验,可以酌情填写
断开客户() BASIC
调用格式: 〈无返回值〉 对象.断开客户 (文本型 欲断开客户) - 系统核心支持库->服务器
英文名称:CloseClient
断开与指定客户之间的连接。本命令为初级对象成员命令。
参数<1>的名称为“欲断开客户”,类型为“文本型(text)”。为调用“取回客户”方法所返回的客户地址文本。
操作系统需求: Windows
用此命令可以断开与客户组件的连接
参数1需要填写用户的信息,可用取回客户()调取
例程:实现客户端向服务器发送“Hello World”,服务器接收后返回“Hello”并使用弹窗告知用户
首先应该在客户端的窗口载入子程序中写如下代码 BASIC
.版本 2
客户1.连接 (“127.0.0.1”, 169832)
客户1.发送数据 (“Hello World”)
![图片[11]-易语言实现服务器与客户端数据互换(含简单聊天软件例程)-落叶博客](https://s1.ax1x.com/2020/04/03/GNWuIH.png)
然后在服务器的数据到达事件中写入以下代码:
![图片[12]-易语言实现服务器与客户端数据互换(含简单聊天软件例程)-落叶博客](https://s1.ax1x.com/2020/04/03/GNWwJs.md.png)
BASIC
.版本 2
.如果真 (到文本 (服务器1.取回数据 ()) = “Hello World”)
服务器1.发送数据 (服务器1.取回客户 (), “Hello”, )
.如果真结束
![图片[13]-易语言实现服务器与客户端数据互换(含简单聊天软件例程)-落叶博客](https://s1.ax1x.com/2020/04/03/GNfY11.png)
最后,在客户组件的数据到达处写入以下代码即可
![图片[14]-易语言实现服务器与客户端数据互换(含简单聊天软件例程)-落叶博客](https://s1.ax1x.com/2020/04/03/GNfd0O.md.png)
BASIC
信息框 (到文本 (客户1.取回数据 ()), 0, , )
![图片[15]-易语言实现服务器与客户端数据互换(含简单聊天软件例程)-落叶博客](https://s1.ax1x.com/2020/04/03/GNfrhd.png)
运行服务器端软件后(服务器端的软件必须运行!否则不可能连接到)再运行客户端,我们就可以看到我们的代码没有问题,顺利执行了
![图片[16]-易语言实现服务器与客户端数据互换(含简单聊天软件例程)-落叶博客](https://s1.ax1x.com/2020/04/03/GNfgjP.png)
实例下载:点击此处
暂无评论内容