我想明白为什么在Wireshark
程序中收到的数据包与我的delphi应用程序发送的数据包不同。谁能帮我?德尔福 - 为什么udp数据包不同?
这里是我的代码:
if Pos('\x',comandoRede.Comando) > 0 then
begin
bufferS := Explode('\x',comandoRede.Comando);
SetLength(buffer,Length(bufferS)-1);
for J := 0 to Length(Buffer) -1 do
begin
buffer[J] := StrToInt('$'+bufferS[J+1]);
end;
TIdUDPServer(item).SendBuffer(equipamentoRede.IP,
StrToInt(equipamentoRede.Port),buffer,Length(buffer));
end
这里的缓冲区数组的内容:
这里日志的network sniffer Wireshark
我我试过无线TIDUDPClient也是如此,但问题是一样的。
感谢您的帮助。
在填充'buffer'之前'bufferS'的值是什么?你确定你实际上是在调试器中查看正确的'buffer'(以及在查看它时哪些代码停止了?),并且在Wireshark的正确数据包中?我怀疑你正在看两件不同的事情。 Indy不会更改正在发送的数据。 –
如何在您的Indy版本中声明SendBuffer?它使用TIdBytes参数还是使用无类型的var参数? – MBo
@MBo:给出显示的代码,它必须是'var'版本(Indy 9),因为'TIdBytes'版本(Indy 10)没有明确的长度参数,所以它使用数组长度代替。 –