日期:2014-05-18  浏览次数:20773 次

十万火急!如何根据对方写好的消息或文件传输协议来接收数据。
对方cs端是用dephi开发的,现在是要将文本消息或文件传送到我方asp.net开发的bs端上面
请问我是该如何解析它提供的消息或文件传输协议来接收数据。

比如:
 基本协议族的输出包基类
 基本协议族的包都具有以下的格式,报头总长度 32个字节:  
  1. [0]报头标志(FStart), 1字节, Byte, 0x02
  2. [1]命令(FCMD), 1字节, Byte,缺省是 0x00
  ...............

问题:
1.以上两条协议内容是怎么解析的,如何去根据这些参数去接收数据。
2.如果对方不在线的时候数据应该保存到服务器 ,又应该怎样保存。该如何写保存?
3.而数据保存以后,对方下次登录时候又该如何提示有传送消息,如果是文件则弹出接收或拒绝的窗口,类似qq一样。而这个接收或拒绝的信息又如何返回到发送端。
4.以上3个问题是对方在cs端给我bs开发端发送消息或文件的需要解决的问题,如果bs端要给cs端发送文件,需不需要写对应的协议,而且对方不在线的时候又该如何在对方上线时提示,然后对方应该怎样获取保存在服务器的数据,需要提供什么给对方获取数据==。

请教有这方面经验的高手们,希望能尽详细的解答,最好有现成的代码资料。问题解决后200分相送,真的很急,今天就要看到结果了。。。。。

------解决方案--------------------
路过,学习之中,帮顶一下
------解决方案--------------------
协议的分析很简单啊,你只要让定义协议的人把协议的定义都告诉你,然后你照着这些定义去截取和分析就行了。分析协议只有一个要求,那就是你必须完全明白协议内容的每一个字节的含义和作用。
------解决方案--------------------
无语……
首先,我们用Socket接收回来的是一个Byte数组,接下来我们就要根据协议的定义来分析这些数据。比如:
协议的第一个字节是报头标志,那我们就先取出Byte数组的第一个元素,分析是不是报头标志。如果是就继续分析,否则就做错误处理。然后第二个字节是命令,那么我们就取出BYte数组的第二个元素分析,后面的也都是这样处理。

假如第三到第六位这四个字节是一个int型的数据的话,那我们就取出第三到第六这四个元素组合成一个int的数据。

所以说你必须完全理解协议的定义。其它的都非常简单。