Foxtable(狐表)用户栏目专家坐堂 → 客户端OpenQQ发送长string,服务器偶尔会收不到。这个有办法妥协解决吗?


  共有1569人关注过本帖树形打印复制链接

主题:客户端OpenQQ发送长string,服务器偶尔会收不到。这个有办法妥协解决吗?

帅哥哟,离线,有人找我吗?
chen3728060
  1楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:二尾狐 帖子:388 积分:5098 威望:0 精华:0 注册:2013/11/2 0:01:00
客户端OpenQQ发送长string,服务器偶尔会收不到。这个有办法妥协解决吗?  发帖心情 Post By:2017/3/29 9:40:00 [只看该作者]

我是卖便利店收银软件的,想给我的第三方收银软件,做一个手机查账的功能。我在阿里云上做了一个OpenQQ的服务器端,顾客的本地电脑装了一个客户端。

 

①老板通过手机向HttpRequest发送查询请求

②然后服务器端会通过OpenQQ向客户端发送一条查询指令,例如“库存数量|查第一页|每页50条”。

③然后客户端ReceiveMessage事件收到了,就SQL查询本地的erp软件的库存数量,提取出来生成临时表。然后遍历临时表的行,把表变成一条string,例如"苹果,5|雪梨,6|香蕉,7”。客户端把这条string 发送给服务器端

④服务器端ReceiveMessage事件收到了,把和这个string转为一个表的样子

⑤HttpRequest里,用CreateFromDataTable的方法生成网页给回老板

 

现在有个问题OpenQQ之间传输的string,如果太长,会容易出现收不到的情况。经过我多次测试,发现这样的事情。

 

①服务器端发客户端,99%是没问题。因为指令很短,就是“库存数量|查第一页|每页50条”

②客户端发服务器端,如果表里的行少于15行,转生成的string不会太长,传回去服务器端99%能收到

 


图片点击可在新窗口打开查看此主题相关图片如下:qq截图20170329092314.png
图片点击可在新窗口打开查看

 

③客户端发服务器端,如果表里的行超过15,或者生成的string比较长,客户端发送后,服务器端很容易收不到但是!我把客户端只有50k上传速度的联通网线拔了,换成上传有500k的电信光纤网线,或者是移动4G热点,就又可以稳定收到。
 


图片点击可在新窗口打开查看此主题相关图片如下:qq图片20170329092502.png
图片点击可在新窗口打开查看

 

④开发的时候,服务器端和客户端都在同一个电脑里时,无论怎么发,多少行提取,string多长,都是100%的收发。

 

是不是string太长会容易丢失?但是我开发的其他软件,经常客户端一次过保存5000多新行的表(数据库在阿里云服务器),也能保存成功,没有行的丢失。这条string,好像也就400个字符,没几个KB,怎么会传输失败?

 

------------------

 

或者我想实现的这个移动端查询第三方收银软件数据,还有其他思路解决吗?

 

我有想过直接装服务器端在客户电脑,移动查询直接就在客户电脑的HttpRequest上生成。但是有个很大的问题,客户都是自己的小网线,什么移动 铁通 电信都有,没有固定公网ip,跟给他搞动态域名还要搞路由器端口映射,每个客户这样搞,我太痛苦了。而且客户电脑又不注意防毒,偶尔就中个病毒又要重新搞。

[此贴子已经被作者于2017/3/29 9:43:56编辑过]

 回到顶部
帅哥哟,离线,有人找我吗?
chen3728060
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:二尾狐 帖子:388 积分:5098 威望:0 精华:0 注册:2013/11/2 0:01:00
  发帖心情 Post By:2017/3/29 10:28:00 [只看该作者]

顶一下先~


 回到顶部
帅哥哟,离线,有人找我吗?
有点色
  3楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:13837 积分:69650 威望:0 精华:0 注册:2016/11/1 14:42:00
  发帖心情 Post By:2017/3/29 10:37:00 [只看该作者]

 为什么数据不直接存放在服务器上,而是分别存放在各个客户端?

 

 如果你服务器给各个客户端发送请求,而客户端有可能网络故障而无法响应请求。

 

 如果你确定是要那样做的,而长字符串不行,那就发文件吧。


 回到顶部
帅哥哟,离线,有人找我吗?
wei0769
  4楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:八尾狐 帖子:1814 积分:19240 威望:0 精华:0 注册:2013/4/10 14:38:00
  发帖心情 Post By:2017/3/29 10:42:00 [只看该作者]


图片点击可在新窗口打开查看此主题相关图片如下:4.png
图片点击可在新窗口打开查看

 回到顶部
帅哥哟,离线,有人找我吗?
chen3728060
  5楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:二尾狐 帖子:388 积分:5098 威望:0 精华:0 注册:2013/11/2 0:01:00
回复:(wei0769)[upload=png,4.png]UploadFile/2017...  发帖心情 Post By:2017/3/29 11:10:00 [只看该作者]

服务器端,向客户端发指令,只有OpenQQ这个玩意啊,没有其他方法啦


 回到顶部
帅哥哟,离线,有人找我吗?
chen3728060
  6楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:二尾狐 帖子:388 积分:5098 威望:0 精华:0 注册:2013/11/2 0:01:00
回复:(有点色) 为什么数据不直接存放在服务器...  发帖心情 Post By:2017/3/29 11:13:00 [只看该作者]

我本来有想过把客户端的数据查询好,然后全部回写到服务器的数据库里。不过这样就需要客户端经常同步咯,服务器端的数据库压力就大咯。我以前用C#写了一个这样架构的。现在我用狐表,就想用服务器端最轻压力的,不存数据,每次就向客户端要,把压力堆给客户端。 你觉得那种架构好?

 回到顶部
帅哥哟,离线,有人找我吗?
chen3728060
  7楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:二尾狐 帖子:388 积分:5098 威望:0 精华:0 注册:2013/11/2 0:01:00
回复:(有点色) 为什么数据不直接存放在服务器...  发帖心情 Post By:2017/3/29 11:14:00 [只看该作者]

我是卖收银软件的嘛,就是很多客户,用这些收银软件,那些库存数据本身就是在客户自己的sql2000数据库里,不是在我们服务器里。

 回到顶部
帅哥哟,离线,有人找我吗?
有点色
  8楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:13837 积分:69650 威望:0 精华:0 注册:2016/11/1 14:42:00
  发帖心情 Post By:2017/3/29 11:20:00 [只看该作者]

 就按照你原本的思路来做吧。发长字符,改成发文本文件或者数据库不就好了?要接受偶尔接收不到数据情况,这种传输方式毕竟不是完全可靠的,网络原因会导致这种情况。

 

 


 回到顶部