ZServer4D中踩过的坑

DoubleTunnel通道端口的问题

Server 端 RecvTunnelPort 和 SendTunnelPort 与 Client 端 RecvTunnelPort 和 SendTunnelPort 是相反的。
简单举例:

    Server--------------------------Client
  RecvTunnelPort >>>>>>>>>>>> SendTunnelPort
  SendTunnelPort >>>>>>>>>>>> RecvTunnelPort
  • 调试了两天,按照惯性思维认为Server和Client申明的端口肯定是Recv对Recv,Send对Send,所以总是数据发送失败,又不好意思问(怕暴露了我是菜鸟的事实),直到第二天下午看大佬提供的Demo,才注意到原来Send和Recv对应的端口关系要交换,发送数据就像画一个圆一样。

Reader数据读一次后再读取就为空了

Reader只要执行了readxxx的任何操作,计数器就会+1。
大佬的原话如下:

Reader 只要执行了 ReadXXXX (例如:Reader.ReadString,Reader.ReadInteger )的任何操作,
计数器就会 + 1,比如 Index 0 是String,执行一个InData.Reader.Readstring,Index 就是 1。
我们按顺序写,
OutData.WriteString
OutData.WriteInteger
用InData来读就要
InData.Reader.ReadString
InData.Reader.ReadInteger
另一个方法
Indata.ReadString(0)
Indata.ReadInteger(1)
  • 难怪每次一用 DoStatus(ThInData.Reader.ReadString); 查看Client提交的查询指令之后,再用MyDM.fdqry1.Sql.Add(ThInData.Reader.ReadString);查询数据就会提示查找不到命令。又一次惯性思维坑我。

Source目录里的MM文件夹是空的???

将ZServer4D下面目录的压缩包解压进去就行了。


2.png

在客户端与ZServer4D Server端异步方式通讯无响应?

异步需要有个地方做progress处理,要把progress用起。
例如:

image.png

根据大佬的指点,我的理解是异步方式的所有操作是放到Progress里进行处理,所以需要Progress来监视。
大佬的原话如下:
progress是主循环,和application.progressmessages一样
windows中的message也是这种处理方式,差别是message会有卡机制,没有消息时,message的process会一直卡住,zs的progress永远不会卡住,其余没差别

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容