IdUDPServer将标头校验和发送为0x00

时间:2012-12-28 18:08:01

标签: delphi indy delphi-xe3

我正在使用众所周知的服务器制作一个简单的UDP P2P聊天程序。 客户端通过单个IdUDPServer从服务器和客户端发送和接收数据。

现在的客户端可以登录和注销,即他们可以将数据发送到服务器。 每当服务器发送任何数据时,它就会被丢弃在节点的NIC侧,因为wireshark通知嵌入式ip头校验和为0x00。

IdUDPServer设置(客户端/服务器)

活跃:真实

绑定:

广播:错误

BufferSize:8192

DefaultPort:10000

IPVersion:Id_IPv4

ThreadedEvent:False

使用的命令

中只使用了一个命令

UDPServer.SendBuffer(ED_Host.Text,StrToInt(ED_Port.Text),Buffer);

类似的配置在我的另一个程序中完美运行。

1 个答案:

答案 0 :(得分:1)

大多数NIC现在将执行校验和验证并生成,而不是os网络堆栈。这是为了提高性能,称为校验和卸载。因此,wiresshark将报告校验和作为错误丢失的事实但通常可以忽略或在线鲨设置中关闭错误。

某些NIC驱动程序允许您关闭校验和卸载。试试这个并重新测试代码