社区
网络通信/分布式开发
帖子详情
如何用idUDPClient把图片流发送到另一台机器上。
ximin
2005-09-22 06:36:14
我用idUDPClient发送JPG图片,AData收到数据大小虽然与发送的一样,但内容根本就不是发送的东西。
...全文
240
11
打赏
收藏
如何用idUDPClient把图片流发送到另一台机器上。
我用idUDPClient发送JPG图片,AData收到数据大小虽然与发送的一样,但内容根本就不是发送的东西。
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
11 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
gunziyigen
2005-09-28
打赏
举报
回复
是执行到jpgstream.SaveToStream(memoryStream);的时候报错,请兄弟帮忙,如果是完整的代码就最好了
gunziyigen
2005-09-28
打赏
举报
回复
我在用上面的代码编译时没错,执行到jpgstream.SaveToFile('e:\s.jpg');时报错,怎么回事
ximin
2005-09-28
打赏
举报
回复
已经试过了,方法果然应验。
悟:发送方必须是buffer中的数据(字符数据),接收方才能正确接收.而不能把一个流直接发送!
ximin
2005-09-28
打赏
举报
回复
多谢老兄指点
ximin
2005-09-27
打赏
举报
回复
UP
old_wei
2005-09-27
打赏
举报
回复
改了一下
var p: Pointer;
mdata:array[1..10000] of char;
k:integer;
ss:=tcanvas.Create;
ss.Handle:=getdc(0);
sb:=tbitmap.Create;
sb.Width:=screen.Width;
sb.Height:=screen.Height;
sb.PixelFormat:=pf16bit;
f:=bitblt(sb.Canvas.Handle,0,0,sb.width,sb.height,ss.Handle,0,0,srccopy);
if f then sb.SaveToFile('i:\ssss.bmp');
jpgstream:= TJPEGImage.Create;
jpgstream.Assign(sb);
jpgstream.CompressionQuality:=20; {压缩质量}
jpgstream.Compress;
jpgstream.SaveToStream(memoryStream);{保存为JPG流}
jpgstream.SaveToFile('i:\ss.jpg');
jpgstream.free;
//ReleaseDC(0,ss.Handle);
//s:=edit1.text;
//idudpclient1.SendBuffer(memoryStream,memoryStream.Size);
P:=FStream.Memory;
FStream.Position:=0;
for k:=1 to memorystream.Size do mdata[k]:=pchar(dword(P)+k-1)^;
IdUDPClient1.SendBuffer(mdata,memorystream.Size);
memorystream.Free;
//你再试一下
ximin
2005-09-23
打赏
举报
回复
直接用(adata as tmemoryStream).saveAsfile('I:\s.jpg')存图片也不行。
大小一样,但内容不是发送的内容。
ximin
2005-09-23
打赏
举报
回复
程序还是有问题呀。请老兄帮忙指点一下。
发送端:(获得屏幕图片 发送流)
ss:=tcanvas.Create;
ss.Handle:=getdc(0);
sb:=tbitmap.Create;
sb.Width:=screen.Width;
sb.Height:=screen.Height;
sb.PixelFormat:=pf16bit;
f:=bitblt(sb.Canvas.Handle,0,0,sb.width,sb.height,ss.Handle,0,0,srccopy);
if f then sb.SaveToFile('i:\ssss.bmp');
jpgstream:= TJPEGImage.Create;
jpgstream.Assign(sb);
jpgstream.CompressionQuality:=20; {压缩质量}
jpgstream.Compress;
jpgstream.SaveToStream(memoryStream);{保存为JPG流}
jpgstream.SaveToFile('i:\ss.jpg');
jpgstream.free;
ReleaseDC(0,ss.Handle);
s:=edit1.text;
idudpclient1.SendBuffer(memoryStream,memoryStream.Size);
memorystream.Free;
//经查看,ss.jpg是正常图片文件。
接收端:
ms:=tmemoryStream.Create;
adata.Position:=0;
ms.LoadFromStream(adata);
ms.SaveToFile('i:\s.jpg');
ms.Free;
//s.jpg不正常,大小与ss.jpg一致,但不能显示。用源码查看工具比较s.jpg与ss.jpg内容根本不同。
bj20082005
2005-09-23
打赏
举报
回复
up
old_wei
2005-09-23
打赏
举报
回复
Jpeg:=tjpegimage.Create;
try
AData.Position:=0 ;
Jpeg.LoadFromStream(AData);
Image9.Picture.Bitmap.Assign(Jpeg);
finally //以下为清除工作
Jpeg.free;
end;
old_wei
2005-09-23
打赏
举报
回复
你要把指针归零,AData.Position:=0 ;
就可以了。
多网卡指定网卡进行
UDP
通信(添加静态路由解决双网卡问题 )全记录
这片文章的要解决的问题和解决方法在标题就已经解释得很清楚了。这里记录一下我的解决过程(还是各种查资料)。 (这个解决方法适不适用于跨网段就不知道了,可以试试) 我的工作环境是服务端和客户端都是多网卡。我需要使服务端的网卡10.0.0.1与客户端的网卡10.0.0.2之间进行通信。在代码里面我也确实是这样绑定的。但是我遇到了与
图片
中描述一样的问题: 网上给出的答案大体是分别绑定IP,把套接...
一个定时网络唤醒的Windows 2000服务(Service)程序
单位有两台服务器,一台的Bios中有定时启动的功能,而另外一台没有。所以每天早上到单位后第一件事情就是要去按一下这台服务器的电源开关来开机,不甚其烦!今天编写了一个定时网络唤醒的服务(Service)程序,安装在第一台服务器上,这样当第一台服务器启动后,如果到了时间,就会自动通过网络
发送
WakeOnLine(WOL)的广播包来唤醒另外一台服务器。步骤:启动Delphi,File-New-O
个定时网络唤醒的Windows 2000服务(Service)程序
单位有两台服务器,一台的Bios中有定时启动的功能,而另外一台没有。所以每天早上到单位后第一件事情就是要去按一下这台服务器的电源开关来开机,不甚其烦!今天编写了一个定时网络唤醒的服务(Service)程序,安装在第一台服务器上,这样当第一台服务器启动后,如果到了时间,就会自动通过网络
发送
WakeOnLine(WOL)的广播包来唤醒另外一台服务器。步骤:启动Delphi,File-New-O
第 6 章
UDP
和多播
用户数据报协议(
UDP
) 位于 IP 之上,并提供与 TCP 不可靠的对应物。
UDP
在网络中的两个节点之间
发送
单独的数据包。
UDP
数据包不知道其他数据包,并且不能保证数据包将实际到达其预定目的地。当
发送
多个数据包时,无法保证到达顺序。
UDP
消息只是简单地
发送
,然后被遗忘,因为接收方没有
发送
确认。
UDP
是一种无连接协议。两个节点之间没有消息交换以促进数据包传输。不维护有关连接的状态信息。
UDP
适用于需要高效交付且不需要保证交付的服务。例如,它用于域名系统(DNS) 服务、网络时间...
delphi视频聊天
用Delphi开发视频聊天软件 一、引言 我们知道视频聊天软件的关键技术在于采集视频,并实时传输给聊天软件在线的人。对于视频的采集,这里采用微软公司的关于数字视频的一个软件包VFW(V
id
eo for Windows)。相信很多人对它都很熟习,VFW能使应用程序通过数字化设备从传统的模拟视频源得到数字化的视频剪辑,VFW的一个关键思想是播放时不需要专用硬件。为了解决...
网络通信/分布式开发
1,593
社区成员
32,963
社区内容
发帖
与我相关
我的任务
网络通信/分布式开发
Delphi 网络通信/分布式开发
复制链接
扫一扫
分享
社区描述
Delphi 网络通信/分布式开发
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章