Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/vb.net/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 包内容的二进制读取器?_C#_Vb.net_Packet_Packet Capture_Binaryreader - Fatal编程技术网

C# 包内容的二进制读取器?

C# 包内容的二进制读取器?,c#,vb.net,packet,packet-capture,binaryreader,C#,Vb.net,Packet,Packet Capture,Binaryreader,我使用以下示例创建了一个检索网络数据包的应用程序: 我的意图是使用它来获取从服务器发送到特定应用程序的特定数据包的内容,我对任何其他数据包都不感兴趣。我感兴趣的数据包是一个定期更新的值 我将其转换为VB.Net,因为这是我的首选,所以我将用VB给出我的代码片段,尽管我也能理解C,所以可以随意给出使用C的示例 它有一个参数为“s”的事件,该参数包含字节数组中接收到的数据包的内容 我将该数组转换为使用二进制读取器读取,如下所示: Dim stream As System.IO.MemoryStrea

我使用以下示例创建了一个检索网络数据包的应用程序:

我的意图是使用它来获取从服务器发送到特定应用程序的特定数据包的内容,我对任何其他数据包都不感兴趣。我感兴趣的数据包是一个定期更新的值

我将其转换为VB.Net,因为这是我的首选,所以我将用VB给出我的代码片段,尽管我也能理解C,所以可以随意给出使用C的示例

它有一个参数为“s”的事件,该参数包含字节数组中接收到的数据包的内容

我将该数组转换为使用二进制读取器读取,如下所示:

Dim stream As System.IO.MemoryStream = New System.IO.MemoryStream(s)
Dim reader As New System.IO.BinaryReader(stream)
Dim pos As Long = 0
Dim length As Long = reader.BaseStream.Length
然后,我将通过一个循环,以'pos'变量作为当前位置,按当前字节的数据类型递增。(比如:something=reader.ReadString()pos+=something.Length)

我唯一的问题是:我不确定我应该找什么类型的?数据包的“结构”是什么?是否可以检索发送数据包的服务器及其发送到的应用程序

我以前从未尝试过对数据包使用类似的方法,我只有从自定义格式的数据库文件获取数据的经验


编辑:我发现了一些更有用的东西,其中有文档解释了源/目标IP以及如何根据它们进行过滤,它看起来比前面提到的上述示例要完整得多


虽然它仍然没有解释如何理解数据包内容本身,但是能够过滤数据包是一个很大的帮助。

有许多不同类型的网络数据包,大多数都有很好的文档记录

你要做的是下载Wireshark(微软也有一个类似的工具,我现在不知道它的名字),用它运行一些捕获,然后查看日志


Wireshark几乎可以识别现有的所有网络数据包,因此您可以使用其日志确定需要识别的数据包类型,然后通过谷歌搜索其规格。

坦率地说,
BinaryReader
的主要用途是读取用
BinaryWriter
编写的数据。因为这里的情况不是这样:忘了
BinaryReader
——它不会帮你的。