虚拟局域网的技术(100分)

  • 主题发起人 主题发起人 cjmcn-sh
  • 开始时间 开始时间
C

cjmcn-sh

Unregistered / Unconfirmed
GUEST, unregistred user!
用WINSOCK虚拟一个虚拟一个局域网出来,类似浩方的功能,这个怎么才能实现呢?目的是连接不同网段的电脑
 
看一下NDIS
 
WINSOCK不是可以么?具体的不太清楚。感谢各位,帮帮我
 
我也正在学习中1``~
 
GDI+ 可以很方便地实现您的这个要求
 
不知道楼主用的什么方式实现的缩放,试试下面的代码:

{参数1:源图象image
参数2:放大后图象image
参数3:放大倍数
不区分图象格式,只要能在image中显示就行
对透明、半透明部分无法处理}
procedure TForm1.ImageZoom(source,target:timage;scale:single=1.5);
var
rect:trect;
sbmp,tbmp:tbitmap;
begin
if assigned(source.Picture.Graphic) then begin
tbmp:=tbitmap.Create;
sbmp:=tbitmap.Create;
try
sbmp.Assign(source.Picture.Graphic);
tbmp.Width:=round(sbmp.Width*scale);
tbmp.Height:=round(sbmp.Height*scale);
tbmp.Canvas.CopyRect(tbmp.Canvas.ClipRect,sbmp.Canvas,
sbmp.Canvas.ClipRect);
target.SetBounds(target.Left,target.Top,tbmp.Width,tbmp.Height);
target.Picture.Assign(tbmp);
finally
sbmp.Free;
tbmp.Free;
end;
end;
end;
 
hs-kill,这个方法和我的差不多,为什么FREE以后内存释放不掉呢?
 
image1.Picture.Bitmap.FreeImage;//这样释放
image1.Picture.Bitmap:=nil;
 
FreeAndNil(实例名);
 
free释放不掉? 不能啊......你在哪看没释放掉的?
 
free本身就释放内存了,再:=nil;也只是把指针置空
或者不free,直接:=nil;也行,会自动先free再:=nil;

target中的图象不用手动释放,在assign的时候会先把旧图象释放掉的

你可以去看image相关方法的源码
 
我在任务管理器中查看内存,批量处理图像的时候内存一直在增长,没有一点点释放,当程序关闭的时候内存才被释放掉
 
晕.......任务管理器.......不要看那个,程序释放后,不一定就要到系统申请释放内存
这部分内存会被保留,以便下次再需要新申请内存的时候可以直接调用这部分内存

释放,是在程序内部标注他申请的这部分内存为已经释放的内存,而对于系统,这部分内存仍然被标注为已经分配个这个程序并且正在使用

只有在程序关闭的时候,这些内存才会被告之系统已经不使用了

明白?
 
那我程序占用的内存不是无限增大直到用完所有内存么?我现在的问题就是怎么清除掉。
 
哎 怎么可能,涨到一个程度就停止了,你自己试一下不就知道了,写个程序 不断的creat、free,运行一小时,看看占用多少内存
 
程序不关闭,那内存一直往上涨啊。300长4M的JPG就让我700多的内存+虚拟内存玩完了。
不过现在解决了。改用C++的程序了。。唉。可怜啊

发分了。大家都有份
 
后退
顶部