【发布时间】:2013-07-02 15:42:27
【问题描述】:
我正在使用带有 indy10 组件的 delphi xe4,我想将图像从 Tidudpclient 发送到 Tidudpserver。我已经使用 tcp 组件完成了此操作,但相同的代码不适用于 udp。我怎么能这样做? 提前致谢!
Timage(客户端)--->streamUDP-->Timage(服务器)
客户端--------------------------------------------- -- 发送图片
var
pic: tbitmap;
Strm : TMemoryStream;
img2:Timage;
buffer:TIdBytes;
begin
try
img2:=Timage.Create(nil);
pic:=Tbitmap.Create;
Takekpic(pic);
BMPtoJPG(pic,img2);
Strm := TMemoryStream.Create;
img2.Picture.bitmap.SaveToStream(strm);
Strm.Position:=0;
ReadTIdBytesFromStream(Strm,buffer,SizeOf(Strm),0);
IdTrivialFTPServer1.SendBuffer('192.168.17.128',1234,buffer);
finally
strm.Free;
end;
end;
服务器端------------------------------ ------- 阅读图片
procedure TForm6.IdTrivialFTP1UDPRead(AThread: TIdUDPListenerThread;
const AData: TIdBytes; ABinding: TIdSocketHandle);
var
Strm : TMemoryStream;
Jpg: TJpegImage;
begin
Strm := TMemoryStream.Create;
try
WriteTIdBytesToStream(Strm,AData,SizeOf(AData),0);
strm.Position:=0;
Jpg := TJpegImage.Create;
jpg.LoadFromStream(Strm); <---- error while reading (JPEG Error #53)
img1.Picture.assign(jpg);
finally
strm.Free;
Jpg.Free;
end;
end;
这段代码有什么问题?
【问题讨论】:
-
codeforge.com/dlpre/139356 在这个项目中你得到了你需要的一切。
-
您如何确保您通过 UDP 发送的所有数据都完好无损、完整且按正确顺序接收?
-
@FlashThunder 我无法下载此项目...
-
@Arioch'The 查看 Remy Lebeau 的答案
-
“阅读时出错”很好......我知道在哪里聘请间谍来监视你并告诉我错误是什么。真的,如果你一直隐瞒事实信息,你如何让任何人了解你的情况? catb.org/esr/faqs/smart-questions.html#beprecise