易语言局域网聊天问题
服务器组件和客户端组件,客户连接之后有个表或者其他的记录每个客户的句柄,当其中一个客户发来消息之后就直接将这个消息传递到表中记录的每个客户的句柄,这样就是一个群聊系统,下面是简单的代码,仅供参考:
------------------------------------------------客户端-------------------------------------------
版本
2
程序集
窗口程序集1
子程序
__启动窗口_创建完毕
_启动窗口可视
=
真
编辑框1是否允许多行
=
真
编辑框1滚动条
=
2
如果真
(客户1连接
(“这里写入地址”,
2233)
=
假)
信息框
(“无法连接到服务器,请稍后重试!”,
#错误图标,
“连接失败!”)
结束
()
如果真结束
子程序
_按钮1_被单击
判断开始
(编辑框2内容
=
“”)
信息框
(“不允许发送空内容!”,
#错误图标,
“发送失败”)
默认
客户1发送数据
(编辑框2内容)
判断结束
子程序
_客户1_数据到达
局部变量
临时数据,
文本型
临时数据
=
到文本
(客户1取回数据
())
编辑框1加入文本
(临时数据
+
#换行符)
-----------------------------------------服务端-------------------------------------
版本
2
程序集
窗口程序集1
子程序
__启动窗口_创建完毕
服务器1端口
=
2233
子程序
_服务器1_客户进入
列表框1加入项目
(服务器1取回客户
(),
)
子程序
_服务器1_客户离开
局部变量
循环次数,
整数型
局部变量
n,
整数型
局部变量
临时文本,
文本型
局部变量
临时客户,
文本型
临时客户
=
服务器1取回客户
()
循环次数
=
列表框1取项目数
()
计次循环首
(循环次数,
n)
临时文本
=
列表框1取项目文本
(n
-
1)
如果真
(临时文本
=
临时客户)
列表框1删除项目
(n
-
1)
跳出循环
()
如果真结束
计次循环尾
()
子程序
_服务器1_数据到达
局部变量
临时数据,
文本型
局部变量
临时时间,
文本型
局部变量
临时客户,
文本型
局部变量
发送消息,
文本型
局部变量
循环次数,
整数型
局部变量
n,
整数型
局部变量
临时文本,
文本型
临时客户
=
服务器1取回客户
()
临时数据
=
到文本
(服务器1取回数据
())
临时时间
=
到文本
(取现行时间
())
发送消息
=
临时客户
+
“
”
+
临时时间
+
“:”
+
#换行符
+
临时数据
+
#换行符
+
#换行符
循环次数
=
列表框1取项目数
()
计次循环首
(循环次数,
n)
临时文本
=
列表框1取项目文本
(n
-
1)
服务器1发送数据
(临时文本,
发送消息,
)
计次循环尾
()
这个分几种情况的
先说说前提
聊天软件需要一个服务器存放客户端列表吧
只要客户端是在线的,那客户端与服务端必须是处于连接状态(这样服务器就可以作为客户端的中间人)
在这里Server(为服务端),Client A(客户端1)Client B(客户端2)
1,Client A是外网,Client B是外网 这种情况很简单,Client A只要从服务器端得到Client B的信息(IP与登记的端口)就能够建立连接
2,Client A是外网,Client B是内网 这种情况稍复杂,Client A连接Client B会失败,这时,Client A向Server发出请求,这时,Server通知Client B,让Client B连接Client A 因为Client A是外网机器,所以这样也就建立连接了
3,Client A与Client B都在内网,p2p关键是在这里,
当Client A连接Client B失败,Client A向Server发出请求,Server通知Client B对Client A进行连接,这时Client B他能连接上Client A!但是,如果刚才Client A没有连接Client B,那现在的Client B就连接不上Client A!反之:这里重新再来啊,Client B连接Client A失败,Client B向Server发出请求,Server通知Client A连接Client B,这时Client A也能连接上Client A!
在这里需要说一下NAT(网络地址转换),就是当内网用户连接外网时,NAT可以可以将内网地址转换成公网的IP地址与外网进行通信,但外网有数据返进入内网时,有两种可能(如果前面内网有向这个外网地址发送过数据包,那么NAT会把这个外网的连接转换为刚刚发送过数据包的内网地址)
再回来说前面的,Client A为什么会连接Client B失败,因为Client A的数据包到达Client B的NAT时被丢弃了,而这时,Client B为什么又如何能连接Client A成功呢,因为当Client B的数据包到达Client A的NAT时,NAT检测到刚刚Client A有发送过数据包到Client B,这个时候NAT会将这个连接转换到Client A上去 这样就连接成功了
说着我都有点晕了不知道你看着会不会晕- -!看着晕慢慢看吧CSDN中有VB版的UDP打洞例子,你找下
我们上网使用的是TCP/IP协议,通讯时使用的主要包括TCP协议和UDP协议,具体有什么区别就不多说了,TCP也好UDP也好,为了区分接受的对象,都包含了叫做端口的一个标示,你去连接QQ时,会使用一个端口,包括你的IP地址、协议(TCP、UDP)、端口,构成一个应用连接,发出数据的也会包括这些内容,到路由器转发到Internet时,会进行NAT,IP地址转换,将内部地址转换成Internet上的公用地址(一般我们使用私用地址,怎么划分不多说),路由器会记住你的IP、协议及端口号,并将你的地址用路由器的地址、端口代替,然后传输到QQ服务器;别人给你的消息,QQ服务器会顺着你的这个连接,将数据发回到路由器,路由器根据协议及端口,找到你的IP、协议、端口,将数据包重新包装一下,发回到你的机器。
首先要看你们局域网对网络的稳定要求是否高,如果对网络稳定要求高的话建议还是选择服务器版本的聊天软件,如FICQ但是比较老的版本了,现在新一点的都要钱,不要钱的很难找。网络稳定要求不是很高,而且不是同时在线很多人的话,飞秋还是不错的选择,能下载的地方还是比较多,比如到迅雷去搜下就出来了http://wwwgougoucom/searchsearch=%E9%A3%9E%E7%A7%8B&id=2
MSN
飞信
YY
新浪UC
网易泡泡、
阿里旺旺
这些都可以,
如果你不想用这些第三方提供的软件,那就得自己架设一个类似服务器,等于是自己做一个属于自己的聊天工具服务器客户端等,网上应该有免费的软件可以用的。希望采纳
集合了10款LMS软件学生快来看看吧
2023
值得考虑的
10大学习管理软件
Moodle
Moodle或许是领先的免费学习管理解决方案中最为常
用的一款。它是开源学习管理软件,旨在让教育工作
者和学生能使用自定义的学习平台,安全可靠,功能
丰富。ONLY OFFICE文档提供适用于Moodle的免费官
方版连接器, 让用户可以直接在LMS中编辑文本、幻
灯片和工作表,为协作提供助力。
Chamilo
Chamilo也是一款免费的开源LMS, 支持设计和进行远程课
程在线培训项目。此外, 许多教育工作者选择Ch amilo来进
行现场培训课程。Ch amilo安全可靠, 可提供50多种语言
版本。适用于Ch amilo的ONLY OFFICE连接器支持学校在平
台上就文本、电子表格和演示文稿进行编辑和协作。
Sakai
Sakai是一款屡获殊荣的学习管理系统, 老师们可以
使用Sakai设计和提供有吸引力的远程课程。Sakai
赢得了诸多客户的满意,包括全球各地诸多学校及一
些顶级高等教育机构,如斯坦福大学。教育工作者和
学生可以使用Sakai评估家庭作业、接收成绩、进行
测试,还可以在论坛上进行交流。
360Learning
Chamilo也是一款免费的开源LMS, 支持设计和进行远程课
程在线培训项目。此外, 许多教育工作者选择Ch amilo来进
行现场培训课程。Ch amilo安全可靠, 可提供50多种语言
版本。适用于Ch amilo的ONLY OFFICE连接器支持学校在平
台上就文本、电子表格和演示文稿进行编辑和协作。
EdApp
EdApp是一款基于移动设备的服务, 非常高效, 可用于
持用户只需一台智能手机,无论身处何地都能上课。换
句话说,这款应用对学生的硬件没有太多要求。至于功
能,您会找到一个课程构建工具,可对学生的课堂成绩
进行监测和评估。学生可以使用聊天、虚拟教室和讨论
功能进行互动和协作。
OpenOlat
OpenOlat是一款网页版学习管理系统, 由位于fren tix
公司开发, 用于教学、学习、评估和交流。Open Olat每
次安装都可以单独扩展,根据组织的需求进行调整,也可
以集成到已有的IT基础设施中。至于文件共享和协作,
0penOlat可以与ONLYOFFICE文档集成。
Schoology
School ogy是一个综合平台, 鼓励培训过程中的所有
参与者互动:老师、学生、家长、企业客户。与全球
多数LMS一样, 这款解决方案提供课程管理、监控表
现和出勤率等功能,而且您还可以使用分析工具,对
学生的成绩进行更深入的了解。
HumHub
HumHub是一款免费的开源工具包, 用于发布您自己的社交
网络。它为社交内网、企业和私人网络设计,您可以在其官
方市场上选择诸多模块和微件。比如, 您可以将它与ONLY-
OFFICE文档集成, 用于编辑文本、工作表和幻灯片。
Hum Hub完全开源, 支持在私人服务器上部署。平台凭借对
敏感数据的完全控制,为您提供高级别的安全性。
WebWeaver
WebWeaver是一款网页版的电子学习平台, 由Di-
gi Online GmbH开发。它赢得德国诸多教育机构选用
,包括德国成人教育协会、联邦教育和培训研究所、
联邦萨克森州、柏林、明斯特和帕德博恩教区等。该
平台有学校版和企业版两个产品系列。两者都提供诸
多插件, 如用于视频会议的Big Blue Button和用于在
线文档处理的ONLY OFFICE文档。
Thinkific
Chamilo也是一款免费的开源LMS, 支持设计和进行远程课
程在线培训项目。此外, 许多教育工作者选择Chamilo来进
行现场培训课程。Chamilo安全可靠, 可提供50多种语言
版本。适用于Chaamilo的ONLYOFFICE连接器支持学校在平
台上就文本、电子表格和演示文稿进行编辑和协作。
0条评论