FINS/TCP C++踩坑实录 多个00

最近使用欧姆龙PLC开发,使用Fins协议通讯,经历如下过程:

  1. 发起Socket连接
  2. 发起Fins连接
  3. 读写操作指令

结果遇到问题:1/2步骤没问题,到第三步时遇到PLC不再反馈Fins相关信息并结束PLC连接????

  抓包看数据前多了个“00”,不明所以

      抓耳挠腮三天才发现问题:Fins协议要求必须按照Fins格式完整编辑输入数据,多或者少一个字节都不可以,‘0’也不行!!!!

  如:Fins的Header中Length必须和后续数据统一。

    Socket的Send命令也是,数据长度和后面长度参数必须一致,不要以为是0就可以随便写。

否则通过抓包你会发现传输已经不再是Fins相关数据了,而是普通字符串数据,如下图:

正确图:

PS:C#不会遇到这个问题,因为C#不用写数据长度啊!!!!!!

原文地址:https://www.cnblogs.com/Khan-Sadas/p/12698189.html