我是否可以使用C加长的socket库接收、读取和修改CRC和ACK?
我有什么办法可以用吗?我使用树莓Pi和PiCan2。
发布于 2020-12-01 10:05:27
我假设您询问的是TCP/IP,因为UDP数据包没有附加ACK。
AFAIK,您唯一的解决方案是使用Linux的原始套接字并实现您自己的TCP层(请参阅WireShark),因为CRC和ACKs不应该对用户级代码可用。
CRC :您可能有足够的数据来计算CRC,因为任何CRC错误都意味着消息永远不会到达用户应用程序(内核将抛出数据包)。所以你可以安全地重新计算CRC。至于写儿童权利委员会,
ACK :您的应用程序没有收到有关ACK数据包的通知,因此无法提取数据。
编辑:(因为这个问题是在我发布答案后编辑的)
请注意,原始套接字并不是可移植到所有OS版本的,因此您的代码不会是可移植的(这是QUIC协议使用UDP而不是原始套接字的原因之一)。
如果在Pi上运行Linux,可以使用WireShark检查流量。虽然你的C程序不能使用它,但它可以成为一个很好的调试工具。
https://stackoverflow.com/questions/65088288
复制相似问题