October 27, 2005
Announcing FlashVNC
A revolutionary application for the Flash Platform, I'm proud to announce that I have a VNC client written for Flash Player 8.5.
Like everyone else, I've been busy experimenting with the alpha bits available at Macromedia labs. I have quite a few ActionScript 3 and Flex 2 projects in the works, FlashVNC being just the tip of the iceberg.
The new Player is incredible, and enables a whole new breed of applications to be built that simply weren't possible before. The JIT-compiled speed of ActionScript 3 coupled with new built-in classes that Flash Player 8.5 bring to the table is an incredible combination. Throw in the Flex 2 framework to rapidly create interfaces, and it really is a winning combination.
Now, I must confess, FlashVNC is not 100% complete yet, so I'm not ready to show a "live" demo. However, I've come quite a long way and am far enough along now that the finished product is right around the corner. Below is a screenshot of the working prototype:
Key Features of FlashVNC:
- flash.net.Socket - binary socket allows connection to a TightVNC server. I've implemented the RFB protocol to establish 2-way communication between my FlashVNC client and a TightVNC server that I'm testing against.
- DES encryption - it wasn't fun at all, but I've implemented the Data Encryption Standard algorithm for ActionScript 3. Of course this is in a reusable library, so it's not limited to just my FlashVNC project, but part of the RFB protocol is an authentication challenge that requires the use of DES.
- BitmapData - the remote screen is drawn via low level pixel manipulation. This is a feature available in Flash Player 8, but, well.. see the next point.
- ActionScript3 - this wouldn't be possible without the speed of ActionScript 3. The amount of calculations being performed to update the screen is a testament to how much better AS3 really is over AS2.
- Better handling of binary data - in general, Flash Player 8.5 makes working with binary data lot easier. The new int and uint datatypes, along with flash.util.ByteArray have really aided in the creation of FlashVNC.
Of course, it goes without saying that the Flex2 framework enabled me to create an interface for FlashVNC very quickly. I was able to integrate a BitmapData instance with a Flex container, which really helped to make this application possible.
Source code should be available through IFBIN's Flex By Example once the application is finished. When I finish the application, I'll post a working demo then as well (instead of just a measly screenshot).
So yeah.. it's been quiet around here lately, and labs is the reason. Wait until you see what else I have in my bag of tricks... I'm not done yet!


Comments
Amazing!
Posted by: Patrick Mineault at October 28, 2005 07:21 AM
Woo hoo damn cool is all I can say. There are going to be a whole host of apps like this. The biggest thing I can see at the moment is the speed of development that we are seeing with all these examples popping up. I am presuming tho that you havent built all this in ummm 10 days? (I am unsure how far along you are ofcourse ;o)
Posted by: Campbell at October 28, 2005 07:25 AM
oooh, dangerous making this kind of "I'm almost done" announcement. It reminds me a bit of:
http://www.gskinner.com/blog/archives/000097.html
:)
So am I to understand that working with BitmapData sees a huge performance boost in AS3/8.5? This would really help me on a current F8 project I'm working on.
Posted by: Jed Wood at October 28, 2005 08:30 AM
No worries on the "almost done" bit. In fact, this will be available in IFBIN before Spark Europe, which is Nov 16-18.
ActionScript 3 is the key factor in speed. It makes working with BitmapData faster because more code can execute in the same amount of time, thus allowing more pixels to be manipulated on a given frame.
Also, are you using the double buffering approach I outlined here: http://www.darronschall.com/weblog/archives/000177.cfm ?
Posted by: darron at October 28, 2005 08:39 AM
It looks cool. what does it do?
Posted by: felix at October 28, 2005 08:55 AM
Can't wait to test it out!!!.....sweet
Posted by: veejay at October 28, 2005 09:05 AM
I have noticed quite a very programmers implementing protocols. How do you implement a protocols? I am just starting to learn SmallTalk and it would be really cool to implement RPC in SmallTalk.
Posted by: Michael Ramirez at October 28, 2005 09:11 AM
That's a wonderful idea. I could make a lot of use of it.
Posted by: Russell Bailey at October 28, 2005 09:34 AM
Ach... I'm never going to live that down am I? And deservedly so, I guess. :)
Awesome work Darron, can't wait to see it in action.
Posted by: Grant Skinner at October 28, 2005 10:41 AM
Great work Darron - knew you could do it. :)
Posted by: Robert M. Hall at October 28, 2005 10:46 AM
Thanks for the compliments everyone. I'm excited to get this one finished... :-)
Posted by: darron at October 28, 2005 10:59 AM
Keep up the amazing work Darron. Things are getting abit too exciting these days.
Will we be getting a ssh client soon to go with that? (kinding a bit, but seems like anything is possible now).
Posted by: Frederic v. Bochmann at October 28, 2005 12:18 PM
One word: wowza!
Great work man.
Posted by: Abel Rios at October 28, 2005 12:37 PM
Slick, Darron. Very slick. :)
Posted by: Jason Nussbaum at October 28, 2005 12:43 PM
Amazing work Darron. you rock :)
Posted by: Nahuel Foronda at October 28, 2005 01:45 PM
Very cool Darron! So you've got the remote desktop control working as well as the remote desktop viewing right? Can't wait to see the finished version. Very exciting times to be a Flasher/Flexer.
Posted by: Bryan Ledford at October 28, 2005 02:54 PM
darron,
where might one download it?
thanks man.
i wanna try it out :)
tw
Posted by: tony weeg at October 28, 2005 03:00 PM
Sorry tony, no downloads yet. The prototype I have works, but is a little rough around the edges so I'm not ready to demonstrate it just yet.
It was too cool to keep to myself any longer though, so I just had to share. :-)
Posted by: darron at October 28, 2005 03:26 PM
>>Below is a screenshot of the working prototype<<
where, i can't see one.
Posted by: 1stpixel at October 28, 2005 04:48 PM
Really? The screenshot can be found here: http://www.flickr.com/photos/darronschall/56758470/
Posted by: darron at October 28, 2005 05:00 PM
what's the purpose of using flash if you can't "right click" ?
Posted by: thinker at October 29, 2005 12:25 PM
Use Alt + Left Click just as on (the real!) Handheld PC. Or, like the Pocket PC, tap and hold for context menu.
Posted by: John at October 30, 2005 12:19 AM
You're seriously messed up, dude ;)
Posted by: Tuomas Artman at October 31, 2005 03:42 AM
Flasvnc could be integrated with flash comunication server?
Video + Audio + chat + Remote control will be great !!!
Posted by: Javi P at November 4, 2005 08:59 PM
Holy crap, it's about time for me to get back into Flash. Had no idea AS was JITted now.
Posted by: David Grant at November 9, 2005 03:12 PM
this is absolutely great stuff! I cant wait to see the final result. Well done!!
Posted by: kosso at November 15, 2005 11:09 AM
Update: Alpha version released here...
http://www.darronschall.com/weblog/archives/000192.cfm
.. still a work in progress, but you get the idea. ;-)
Posted by: darron at November 16, 2005 10:12 AM
Is this Remote Desktop Control or jus Remote Desktop Viewer?
What is the THINGY that is actually used in Breeze to server this Remote Desktop Control purpose?
Anyway, it looks to be a really good work! :)
Posted by: Moorthy at November 24, 2005 09:13 PM
Is it worth pulling this onboard with the ultravnc project along side their java client?
Posted by: Diceman at January 24, 2006 06:50 AM
i get the white screen as well, i know it has something to do with the vnc running mode or possibly operative system of the host. i tested with an windows xp machine and ultravnc and worked just fine, but then i placed the same exact version of ultravnc on my server windows and used it inside a terminal server and right away all i get is a white screen. Now, mouse events work!, but the screen is white. Maybe this will help to solve this white screen bug.
Att
Javier
Posted by: Javier at May 9, 2006 09:19 AM
Breeze uses a propietary vnc similar flavor of screep capture but it utilizes lots more of your cpu usage because they turn the screen capture to a video capture like mode where flash is able to use to share through. But this is for the presenter side. On the client side all it is doing is showing the shared object, so it is nothing like this project. Note for Darron, if you enable also recording this could be a very special tool since it does exist in some versions of vnc but it is not to it's full potential yet. If you can even record to something even diferent like a flash swf , that'll do it. here is a link: http://www.unixuser.org/~euske/vnc2swf/
Javier
Visual Net Design
Posted by: Javier at May 9, 2006 09:35 AM
Great idea! I can't wait to see the demo. Please let me know when it's ready.
Posted by: Eric Lenington at May 28, 2006 03:19 PM