关于屏幕问题

kw123 2003-11-24 01:45:49
我的目的如下:
1)几台机子开启应用程序
2)设置一台为服务器,其他的为客户机。通过程序,服务器可以将自己当前的界面在客户机上显示。并能看到他的一举一动!

有的提议此程序用屏幕广播来实现!由于以前没有做过!所以我不清楚!请问各位:这种方式好实现吗?如何实现!!
...全文
77 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
GaoLun 2003-11-26
  • 打赏
  • 举报
回复
我也搞过,不过效果不是很理想,
关注
kw123 2003-11-26
  • 打赏
  • 举报
回复
用UDP如何实现
kw123 2003-11-25
  • 打赏
  • 举报
回复
是这样的,服务器发送一条命令,客户机上的界面切换到服务器上,服务器上的一举一动都可以在客户机上显示,包括鼠标的移动,界面的变化(这些在教学中经常看到的)。我没有此项的设计思路,请各位给些提示!

lovehacker() 的方法可以实现,但是无法实现同步(原因:1)只可以看到屏幕,无法看到具体实现;2)如果用时钟的话,当触发时候,屏幕会闪,时间一长,打开太多,机子会死机)
叶子哟 2003-11-25
  • 打赏
  • 举报
回复
UDP好一些
kw123 2003-11-24
  • 打赏
  • 举报
回复
lovehacker() 的方法是可行的,但是无法时时动态显示。虽然可以用时钟来调用。但是占用资源太多。时间一长就会死机。方法可行。当不是最佳方法

可否提供最佳方法
kw123 2003-11-24
  • 打赏
  • 举报
回复
我看到一个例子,但是。它上面没有实时动态显示!客户机切换到服务器端后,可以实时动态的显示服务器的一举一动,但是socket好象不行!有没有原例
lovehacker 2003-11-24
  • 打赏
  • 举报
回复
服务端:ServerSocket
OnRead事件中:
var
s : String;
s := socket.ReceiveText
if s = 'getScreenSize' then
begin
截获屏幕,并将其保存到TMemroyStream可以用bmp.loadtostream(TMemoryStream);
Socket.sendText(inttostr(TMemoryStream.size));
end
else if s = 'sendIt' then
begin
可以先将TMemoryStream压缩然后再发送,这样速度会快很多.
Socket.sendStream(TMemoryStream);
end;

客户端:ClientSocket
var
mySize : Integer;//全局变量

OnConnect事件中:
socket.sendText('getScreenSize');

OnRead事件中:


begin
if mySize = 0 then
begin
mySize := strtoint(Socket.ReceiveText);
socket.sendText('sendIt');
end
else
begin
接收数据
如果接收到的数据总数>=mySize then
解压缩数据
显示图像
mySize := 0;
socket.sendText('getScreenSize');
end;
end;
power_yhb 2003-11-24
  • 打赏
  • 举报
回复
好实现,
用SOCKET就行了.
每隔一段时间发送当前屏幕内容就行了
kw123 2003-11-24
  • 打赏
  • 举报
回复
没人知道

1,594

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 网络通信/分布式开发
社区管理员
  • 网络通信/分布式开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧