在Windows中显示Linux的桌面

来源:互联网 发布:js点击按钮查看全屏 编辑:程序博客网 时间:2024/04/25 22:36

本文只讨论Linux和Windows分装两台机器的情况,不包含Linux和Windows装在同一机器上的情况,对于后者,可以使用VirtualPC和VMWare,介绍已经很多了,我不再介绍。

最近在单位里着手开发一个基于Perl的手机网站,其实这是我们半年前做过的一个项目,最近又有了机能追加。
由于使用环境是Linux+Apache+PostgreSQL,所以最终的所有程序都必须在Linux上调试使用。可惜用惯Windows的小组成员们,还是更加习惯使用UltraEdit来编写代码,再传到Linux上调试的工作方式,所以大家仍旧在Windows下工作,编写完代码后,用ftp将代码传上去。

1。基础,TELNET方式
那么调试呢,半年前我们刚开始这个项目时,使用telnet来进行调试和配置,用过telnet的人应该知道,它其实是一个Linux的shell环境,就像Windows下的控制台一样,要它显示图形界面是不可能的,这下我们要操作Linux,就只能一遍遍重温DOS时代了,想同时打开多个文本文件进行察看这样简单的操作,也要打开多个telnet再用vi分别打开文件才行。。。。

2。进阶,EXCEED方式
不久,我们找到了这个工具:exceed
最近没有安装这个工具,就暂时贴个它的logo吧:
exceed

这是个非常强大的工具,只需要预先在后台打开它,然后在telnet中设置全局的DISPLAY变量,然后运行任何图形界面的程序,该程序的所有内容都会以独立窗口的形式显示到当前Windows桌面上。它可以支持所有的X11图形界面,所以Linux和Solaris都可以支持。

设置DISPLAY的方法为:
Linux:
$ DISPLAY=192.168.0.1:0.0
Solaris:
$ setenv DISPLAY 192.168.0.1:0.0
显示设置过的变量:
$ echo $DISPLAY

然后,打开一个图形界面的程序:
$ emacs &
如果一切设置正确,稍等一会,emacs编辑器就以窗口方式打开了,这里使用了一个“&“符号,它的意思是以后台的方式打开应用程序,这样一旦应用程序打开了,就可以继续回到当前shell中进行其它操作,否则的话,shell就会等待程序关闭后再返回。

那么如果想打开整个桌面呢?可以用这个命令:
$ kdesktop &
这就是KDE的桌面了。
可惜,现在没有装exceed,没法将最终的效果图贴上来了。:-(

exceed虽然神奇,但是还是有一些不足之处,首先就是速度慢,毕竟要将Linux上的图形界面模拟到Windows上,还是颇费时间的。其次就是,这个程序有比较明显的资源泄漏问题,在Windows2000上使用,窗口开得多了,GDI资源会很快不够用,然后就只有重启Windows的份了。

3。VNC方式
时隔半年后的今天,当我们再次启动这个项目时,我们又找到了新的工具,那就是VNC,它是一个OpenSource的软件,其功能有点类似于早年的PCAnywhere,它可以将目标机器上的整个桌面以图形方式发送到访问端,同时将访问端的鼠标,键盘等命令发送过去,最终你就可以在它提供的窗口中,像操作本地电脑一样操作其它电脑了。这个工具还是跨平台的,比如我们现在就是在Windows下访问Linux系统。
在Redhat7.0上(其他版本我不清楚),VNC是默认安装的软件,那么要做的就只是在Windows上安装一个VNC的客户端了。
运行方式:打开VNC,首先,在Linux上执行命令:
$ vncserver
这个命令会分配一个新的端口给你,然后在Windows上运行客户端,并填入Linux机器的IP地址和刚才得到的端口号,如下图:
vnc

点击connect后,程序还会继续询问登陆的用户密码,此时输入运行vncserver时所用用户的密码就可以了。
最后,程序正确打开,整个Linux桌面就显示在你的眼前了:
vnc

此时,如果有两个人用同一个断口号连接到该linux机器上的话,他们看到的将是同一个桌面,并且还会发生两个人抢鼠标的现象,是不是很有趣?

总体来说,VNC的速度还是不错的。
以前曾听说过,Windows版的vnc是使用GDI hook来监视当前系统中哪些区域的图形发生了变化,从而减小发送的数据包大小,这样来提高速度的,不知道Linux下它又是怎么工作的。
总之,VNC实在是一个非常好的创意,我们现在都可以轻松的在Windows和Linux之间互相操作了!

希望以上内容能对你或你的项目有所帮助,也欢迎和我交流:
tonyki[at]citiz.net