终于完成了一个有点难度的东东了。远端屏幕传输。就是效率不高 ( 积分: 5 )

我測試時,在雙核上跑得更快,我這有台服務器是4CPU的,沒有你說的情況。
 
TO guanyueguan:到哪设置啊,是在服务端的wsClient控件属性里还是要另外放个时间控件呢(那样不好).
 
將服務器端的 Sleep(30) 改到 Sleep(100) 看看。
 
不行啊,我把它改为Sleep(1080)都不行.
 
你告訴我Mail,我發一個測試程序給你看看。
 
guanyueguan:我的email:llbbg_1@yahoo.com.cn
 
已發送。
 
to guanyueguan
本来说昨天晚上给你发个DEMO版看看的。
但我在家里的电脑上一测试,有点让我沮丧。
我家里的电脑 C1.8 超成 2.4, 512M 内存,杂牌 845GV 主板,主板集成 845 显卡
1024*768 32bit
我用本地测试,才 5fps ,CPU 最达 100%, 用你的那个程序来测,20fps, CPU 也是100%.

而我公司的电脑 C2.4, 256M 内存,GeForce4MX 4000, 1024 * 768 32bit,

检查了半天,发现瓶颈还是在把 DDB 转成 DIB 时的速度问题。
在公司的电脑上。扫描150多行,最多只要16ms. 很多时候都不用1ms.
而在家里的电脑上,则需要150-180 ms.
看来还有很多问题需要解决。

(昨天今天都要加班,我看晚上我回去后,给你发一个 DEMO,鼠标键盘的控制还没有做)
 
to guanyueguan:你的程序我用了,很好,放在服务器上速度不错,CPU最高也只有40%多一点.
不知你的代码有什么不同.原来老兄还留着一手.
有可能是我把服务端写成服务器应用程序的缘故,我再试试.
 
请问各位:控制端机子在显示服务端屏幕时(控制端机子)报虚拟内存值太小怎么处理.
 
to guanyueguan:还是不行,你的可以,我的就不行,应该是控制端的问题.
请问你的控制端是如何优化的.
 
to QSmile
為什麼你家裡的機子那麼慢,這是顯卡的問題,你把 DirectDraw 加速關了的話應該會提高一倍左右,如果你用RA測試,你會發現,RA也很占CPU,這主要不是程序問題了。另外計時要用精確計時,不要用GetTickCount。

to xxagri
看來你的調試水平還要努力啊,我發布的那個分塊程序是經過不少測試的,當然也有些BUG,我也說清楚了。我發給你的測試程序是隔行掃描版本,算法我也公布在盒子上,前面也說了,只是這個版本稍微修改了點錯誤,算法是一樣的。不是我要留著一手,而是有些改進罷了。要學學QSmile,從算法下手,當然,暫時跟不上可以先理解現成的程序算法再去實現算法程序。
客戶端程序的內存占用總共肯定是在10M以內,如果超出就證明程序出錯了,你注意檢測參數結構的值,這裡可能會因為網絡的問題而出錯,我沒有做容錯處理。
 
to guanyueguan:谢谢!我继续努力.
 
不关 DirectDraw 加速的问题。
我用红蜻蜓远控,在我家里的机上也很快

顺便问一下,远程控制时,对鼠标拖动这种事件如何从客户端发到服务器商?
 
你參考我放在盒子上的代碼就行了,只是沒處理KEY的SHIFT值。
 
你在盒子上的代码好象没有处理鼠标拖动
// Client

procedure TfrmMain.pbAMouseMove(Sender: TObject; Shift: TShiftState; X,
Y: Integer);
begin
FCmd.Cmd := 1;
FCmd.X := X;
FCmd.Y := Y;
SendCmd(FCmd);
end;


// Server
case FCmd.Cmd of
1: begin
//mouse move
end;
2: begin
SetCapture(WindowFromPoint(FPoint));
mouse_event(MOUSEEVENTF_LEFTDOWN, 0, 0, 0, 0);
end;
3: begin
......

这里有点不明白,你在服务器端对mouse move 命令都没有处理,但 exe 运行又很正常。
 
实际上服务器端己经有移动过程了,只是捕获屏幕时没有连鼠标一起捕获,仍可以看到拖动的效果.
 
QSmile,xxagri
我給你們發了個修改了點的測試程序,我感覺就差那麼一點了,QSmile看看在你家裡的機子上還會不會太慢,我這測不出來。
 
to guanyueguan, xxagri

我已经把我的程序发给你们了

反弹式的。
运行 foxserv.exe 后没有界面。要关闭对话框后 foxserv.exe 才开始工作。

foxserv.ini 是配置文件。

运行 serv_exit.bat foxserv.exe 就会退出。

用 10080 端口通讯,还有很多没有做的地方。

很多 Bug, 有好的建议请告诉我

RedFox
 
1、服务端CPU占用差不多,客户端你的比我多了一倍;
2、操作了10来分钟,测试了一下播放动画,感觉分块冗余数据太大,我的传了7M多点,你的传了差不多35M,将近5倍,需要改进,建议你用API写BMP,只取数据,不要头;
3、部分块检测不准确,画面不对;
3、界面挺漂亮的,有远控的样子。
 

Similar threads

S
回复
0
查看
1K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
961
SUNSTONE的Delphi笔记
S
S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
2K
SUNSTONE的Delphi笔记
S
D
回复
0
查看
892
DelphiTeacher的专栏
D
顶部