【发布时间】:2016-06-01 05:58:56
【问题描述】:
我想了解为什么Wireshark 程序中收到的数据包与我的delphi 应用程序发送的数据包不同。谁能帮帮我?
这是我的代码:
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:给定显示的代码,它必须是
var版本(Indy 9),因为TIdBytes版本(Indy 10)没有明确的长度参数,它使用而是数组的长度。 -
@Remy Lebeau 好吧,所以我建议作者发送指针而不是数组主体。
-
@MBo:是的,这就是必须发生的事情。
标签: delphi udp delphi-7 indy indy-9