我要发布
仪器网/ 仪器社区/ 通信软件/ 易语言写通讯软件,遇到粘包麻烦,希望高手相助!

易语言写通讯软件,遇到粘包麻烦,希望高手相助!

yemen208    2010-11-08    通信软件    浏览 284 次

请不要说用易语言什么什么的,我现在只会易语言,就不要说用别的语言解决的办法了。。用的是服务器和客户这两个组件,当服务器的发送命令连续两条时,客户那边就会有粘包现象。。比如... 请不要说用易语言什么什么的,我现在只会易语言,就不要说用别的语言解决的办法了。。

用的是 服务器 和 客户 这两个组件,当服务器的发送命令连续两条时,客户那边就会有粘包现象。。
比如:
服务器1.发送数据(IP,“01234”, )
服务器1.发送数据(IP,“56789”, )

客户端收到的数据就是 “012345678”,该如何解决?

应答的方法严重影响服务器的执行效率(要处理大量的数据),所以不用考虑。
不好意思。。客户端收到的数据是 “0123456789”,打错了。。

如果能帮我解决这个问题大大加分哦。。

精彩问答
762488155 发布日期:2010-11-13
在开发程序的时候 使用易语言的 服务端 与 客户端 控件时 ,一般不直接使用发送数据功能。因为网络存在丢包的可能,所以易语言的服务端会自动的重发刚刚丢失的包,直到完全结束。有很多新手朋友在使用易语言传送文件的老出现这个问题。估计你的这个问题也是一样的原因照成的,丢包!Z简单有效的解决办法:封装一个发包的方法,我这里已服务端给客户端发送消息举例,到时候你还需要同样在客户端上写相同的代码。-------------------------------------------.版本 2.程序集 窗口程序集1.程序集变量 temp数据包尾部, 文本型.子程序 __启动窗口_创建完毕temp数据包尾部 = “{【结尾】[over]}”.子程序 封装的发送方法.参数 客户IP, 文本型.参数 data, 字节集服务器1.发送数据 (客户IP, data + 到字节集 (temp数据包尾部), ).子程序 _服务器1_数据到达接收到的数据进行处理 (服务器1.取回数据 ()).子程序 接收到的数据进行处理.参数 data, 字节集.局部变量 oldData, 字节集, 静态, , 注意,这是一个静态的变量,如果理解不到静态的意思就请使用全局变量oldData = oldData + oldData' 判断如果 该数据包的尾部不等于.如果 (取字节集右边 (oldData, 取字节集长度 (oldData) - 取文本长度 (temp数据包尾部)) ≠ 到字节集 (temp数据包尾部))    ' 如果说不相同就说明 数据还没有完全的过来,所以这里不做任何处理.否则    处理完整传递的数据 (oldData)  ' 如果相等了,就说明数据已经完全的过来了,我们就调用数据传递后的方法    oldData = {  }  ' 这里记住,调用完毕后就必须置空字节集.如果结束.子程序 处理完整传递的数据.参数 data, 字节集' 在这里就可以写你的处理方法了,' by : 炫e小锋 QQ:251708339
全部评论
幸运草lwn 发布日期:2010-11-09
易语言的粘包是因为使用了客户端和服务器组件,这组件的弱点就是如此,包频率高的时候会粘,解决方法有2种,1换用其他组件比方说完成端口之类更GX的。2收到包后,用分包函数处理,具体方式参考官方论坛,简单地说是根据包结构人工分解。但是第二种方法效率较低
的绵 发布日期:2010-11-09
试试客户的端口改成19800还是19300忘记了下次我用电脑上给你参考我的
最新主题
相关版块
我要评论
X您尚未登录
账号登录
X您尚未登录
手机动态密码登录
X您尚未登录
扫码登录

当前页面为旧版页面,诚邀您切换到新版页面。| 感受更多精心打造的新增功能、更加流畅的操作体验。

官方微信

仪器网微信服务号

扫码获取最新信息


仪器网官方订阅号

扫码获取最新信息

在线客服

咨询客服

在线客服
工作日:  9:00-18:00
联系客服 企业专属客服
电话客服:  400-822-6768
工作日:  9:00-18:00
订阅商机

仪采招微信公众号

采购信息一键获取海量商机轻松掌控