当前位置: 首页 > 知识库问答 >
问题:

如何通过TCP从接收的数据中获取CRC?

熊锐进
2023-03-14

我需要通过以太网协议将以太网数据包从一个设备发送到另一个设备。经过一番研究,我决定使用TCP\IP协议。我创建了相互通信的TCP服务器和TCP客户端。为此,我使用了TcpClient和TcpListener类。它工作正常,但我有一些问题:

    < li >我需要检查收到的消息中的CRC,并与监听方手动计算的CRC进行比较。我该怎么做?我如何从收到的消息中获取CRC?我得到的只是我从客户那里发来的一个准确的信息。 < li >如何以这种数据包格式查看我的消息?我在监听器端看到的都是“数据”字段,但我想看看带有报头、CRC(FCS)等的“原始”字段,就像那张图片一样。

共有1个答案

白星海
2023-03-14

Svemir,您可以在此处查看有关在 C# 中使用套接字进行原始通信的 SO 问题。

这是一个很好的超级用户对各个层的解释。如果你使用套接字的原始方法,那么你将面临一些困难时期

如果以这种方式实现套接字,您将不得不处理TCP的细节。

来自SocketType.Raw上的Microsoft文档

支持对底层传输协议的访问。使用Raw,您可以使用诸如Internet控制消息协议(ProtocolType。Icmp)和互联网组管理协议(ProtocolType。Igmp)。发送时,您的应用程序必须提供完整的IP报头。收到的数据报返回时,IP报头和选项保持不变

从微软留档在SocketType. Stream

支持可靠的双向、基于连接的字节流,无需重复数据,也不保留边界。这种类型的套接字与单个对等方通信,并且需要远程主机连接才能开始通信。Stream 使用传输控制协议 (ProtocolType.Tcp) 和 AddressFamily.InterNetwork 地址系列。

这基本上意味着一切都为您处理,您只能访问超级用户链接所指的信件内容。

 类似资料:
  • 我在JAVA中通过TCP接收字节数据包时遇到了一些问题。我的TCPServer类发送207字节的数据包。当我发送一个数据包时,控制台中的程序显示“读取207字节的数据包”然后停下来。在下一个数据包继续执行时,显示“多重测量”和“读取1868767867字节数据包”。之后,接收将永远停止。我不知道它为什么接收1868767867字节。我在wireshark中检查它,服务器总是发送207字节。 这是我

  • 我正在尝试用snmp V3实现一个简单的NMS。2 api。目标是通过TCP接收SNMP通知。 问题是我只通过UDP接收通知。。。我用SNMP4J API在java中实现了一个代理,但只有通过UDP发送时才起作用。 我已经搜索了一些示例,但我只找到了代理通过UDP向snmp管理器发送陷阱/通知的示例。。。。 我还发现:http://lists.agentpp.org/pipermail/agent

  • 问题内容: 我要通过TCP / IP编写程序,我应该通过客户端或服务器发送对象,当我想发送或接收字符串但尝试读取对象时,它是正确的: 我收到一个例外: 它指的是这一行: 这是我的服务器代码: 客户端代码: 谁能解释我发生了什么,这个例外是什么,为什么我收到这个例外? 问题答案: 只是摆脱发送和接收布尔值的麻烦。这是多余的。如果在创建连接时遇到问题,则不会创建套接字:而是抛出异常。您会将所有内容与同

  • 问题内容: 我想将页面上的一些数据发送到servlet 所以我写了下面的jQuery来做到这一点 我使用所有数据构建一个json字符串,并将其直接发送到servlet 但是我不知道如何从servlet中的ajax获取全部数据 如果查看来自chrome的请求标头的Form Data段 您会看到整个json字符串是关键。 问题答案: 看这里, 您的归属是错误的。它不应该是字符串,而是真实的JSON对象

  • 问题内容: 我是reactjs / redux的初学者,找不到如何使用api调用在redux应用程序中检索数据的简单示例。我猜您可以使用jquery ajax调用,但是那里可能还有更好的选择? 问题答案: JSfiddle; http://jsfiddle.net/cdagli/b2uq8704/6/ 它使用redux,redux-thunk和fetch。 提取方法; 上面使用的动作: (注意:您

  • 我得到了这段代码,但我认为这是不好的方法,如果有像100K的结果,它会返回100K的新用户怎么办?对于,我是否可以使用其他方法,但我不太确定如何实现。另外,是否应该使用块?