易语言实现服务器与客户端数据互换(含简单聊天软件例程)

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

服务器and客户端@凡科快图.jpg

理解本文必须掌握的知识

1.明白什么是服务器且拥有自己的服务器。网上买的服务器必须有公网IP。也可使用局域网内计算机(如自家电脑),但必须在路由器上设置端口转发。

2.具有Internet的基础知识,能理解常用术语或概念(如IP,端口)。

我们先来了解一下易语言的两个窗口组件:

图片[2]-易语言实现服务器与客户端数据互换(含简单聊天软件例程)-落叶博客
图片[3]-易语言实现服务器与客户端数据互换(含简单聊天软件例程)-落叶博客

废话不多说我们开始教程

首先需要创建两个Windows窗口程序,在其中一个里面加入客户端组件,在第二个里面加入服务器组件

提醒:客户端组件是用于客户端软件中的,服务器组件是用于服务端软件中的!只有正确设置,服务器和客户端两个软件才能正常交换信息哦!

图片[4]-易语言实现服务器与客户端数据互换(含简单聊天软件例程)-落叶博客
图片[5]-易语言实现服务器与客户端数据互换(含简单聊天软件例程)-落叶博客

创建好了之后我们需要给服务器组件配置一个端口号,这个端口号不能与服务器上的其他程序的端口号重复

如我们写:169832

图片[6]-易语言实现服务器与客户端数据互换(含简单聊天软件例程)-落叶博客

完成准备工作后我们就可以开始了

客户端事件

图片[7]-易语言实现服务器与客户端数据互换(含简单聊天软件例程)-落叶博客

数据到达:服务器向客户端传输数据时触发该事件

连接断开:服务器与客户端断开连接时触发该事件

服务器事件

图片[8]-易语言实现服务器与客户端数据互换(含简单聊天软件例程)-落叶博客

数据到达:客户端向服务器传输数据时触发该命令

客户进入:客户组件连接服务器时触发该命令

客户离开:客户组件断开连接时触发该命令

客户端指令

连接() BASIC

    调用格式: 〈逻辑型〉 对象.连接 (文本型 服务器地址,整数型 服务器端口号) - 系统核心支持库->客户
    英文名称:connect
    连接到指定主机上的指定端口,该主机上的该端口必须已经被某一服务器组件监听。成功返回真,失败返回假。本命令为初级对象成员命令。
    参数<1>的名称为“服务器地址”,类型为“文本型(text)”。可以为主机名、IP地址等。
    参数<2>的名称为“服务器端口号”,类型为“整数型(int)”。该端口必须已经被服务器组件监听。

    操作系统需求: Windows

此命令是用来连接服务器的,在执行与服务器交换数据之前,需要先连接服务器。

参数1是服务器地址,即为服务器IP地址,查看IP地址请在Windows系统下点击键盘上的Windows+R键,输入cmd,然后输入ipconfig查看本机IP

图片[9]-易语言实现服务器与客户端数据互换(含简单聊天软件例程)-落叶博客
图片[10]-易语言实现服务器与客户端数据互换(含简单聊天软件例程)-落叶博客

提醒:

这里查找到的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]-易语言实现服务器与客户端数据互换(含简单聊天软件例程)-落叶博客

然后在服务器的数据到达事件中写入以下代码:

图片[12]-易语言实现服务器与客户端数据互换(含简单聊天软件例程)-落叶博客

 BASIC

.版本 2

.如果真 (到文本 (服务器1.取回数据 ()) = “Hello World”)
    服务器1.发送数据 (服务器1.取回客户 (), “Hello”, )
.如果真结束
图片[13]-易语言实现服务器与客户端数据互换(含简单聊天软件例程)-落叶博客

最后,在客户组件的数据到达处写入以下代码即可

图片[14]-易语言实现服务器与客户端数据互换(含简单聊天软件例程)-落叶博客

 BASIC

信息框 (到文本 (客户1.取回数据 ()), 0, , )
图片[15]-易语言实现服务器与客户端数据互换(含简单聊天软件例程)-落叶博客

运行服务器端软件后(服务器端的软件必须运行!否则不可能连接到)再运行客户端,我们就可以看到我们的代码没有问题,顺利执行了

图片[16]-易语言实现服务器与客户端数据互换(含简单聊天软件例程)-落叶博客

实例下载:点击此处

© 版权声明
THE END
喜欢就支持一下吧
点赞5 分享
评论 抢沙发

请登录后发表评论

    暂无评论内容