c - Linux下用C语言生成Socket,wireshark检测帧错误
问题描述
我在 Linux 下使用“传统方式”在 C 中创建 Socket:
sock=socket(AF_INET, SOCK_STREAM, 0);
之后,我们(成功地)连接它并使用以下命令发送帧:
send(sock, buffer, bufferSize, 0);
不幸的是,当帧被发送到自动机时,它不会“接收”它(我们不知道为什么)。但如果它发送到“经典”服务器就可以了。
所以,当我用wireshark检查框架时,它提出了一个问题:
Malformed Packet
如您所见,第 6 帧格式错误。看起来 TCP 标头中存在问题,但是什么以及如何解决呢?
提前谢谢了。
解决方案
如您所见,第 6 帧格式错误。看起来 TCP 标头中存在问题,但是什么以及如何解决呢?
Wireshark 试图将数据包解释为来自distcc的通信,可能是因为它使用了 distcc 的端口(3632)。它没有抱怨 TCP 标头中的任何内容,但它抱怨它未能将数据包的有效负载解释为 distcc 应用层协议。
虽然对您的应用程序一无所知,但它可能没有使用 distcc 协议,而只是使用了端口 3632。就目前而言,来自 wireshark 的信息是错误的,因为您从未打算使用 distcc 协议。要“修复”wireshark 中的问题,请移至另一个端口或禁用将 wireshark 中的端口解释为 distcc。
请注意,这只修复了错误显示的数据包格式错误(因为它不是)。它与修复您实际想要的通信无关,并且您的问题中没有任何信息可以帮助解决此问题。
推荐阅读
- typescript - TypeScript:如何使用 Object.entries 向此函数添加正确的类型
- c# - 如何使用 C# 在 PC 上模拟 PS4 控制器的操纵杆?
- python - 如何让我的函数打印我的代码?
- xml - 重写声明,使顺序不再重要
- matlab - 边缘函数如何在边缘函数中自动计算阈值?
- angular - 有没有办法将现有的 Angular 应用程序连接到另一个 nativescript 应用程序(角度)?
- android - 新的安卓应用在旧手机上运行良好,但在新手机上却不行
- c - 奇怪的 C 行为
- r - 在 Google Colab 中保存 R 输出
- go - 为什么指针类型可以访问嵌入类型的所有方法