Hii Guys
I am currently Devloping a Java Remote Desktop Software like teamviewer
I would like know some guidelines about the tools I can use for client and server side

I could create a GUI using Swing and add by using Robot class to imitate mouseactions and keyactions and by using screen capture and Compression and TCP/socket programming I could send the images

Is it the best efficient way to acheive this ?Are there any other latest tools/protocols which are faster ?
By googling a lot I found RDP and VNC a lot of times ?What are they

I could create a GUI using Swing and add by using Robot class to imitate mouseactions and keyactions and by using screen capture and Compression and TCP/socket programming I could send the images.

There was a long thread on this subject a couple of years ago here. We did exactly that.
We tried standard compression methods, but finally got much better performance using a custom algorithm that just transmitted changed pixels using a form of RLE.
I'm still using the resulting code daily.

http://www.daniweb.com/software-development/java/threads/254810/find-the-differences-between-two-images-and-the-locations-of-the-differences/

There are, of course, commercial and open source products that do that. Windows has one built in, and VNC is open source, TeamViewer has a very good version free for non-commercial use. If you just want the functionality, then use one of these or one like them.
But if you want a really good Java learning project, this one is excellent!

Edited 2 Years Ago by JamesCherrill

Thanks man .Going through it .Will report in sometime
And one more question .
Can Close to Real time Standards with least delay (like teamviewer) can be acheivable through java/tcp or else i should shift my focus on windowsAPI or C#

I run my Java version with a frame rate of about 4-5 frames/sec, which is more than good enough for anything except real video. It's the network that ultimately is the bottleneck, not the Java CPU time. You won't do much better with Teamviewer.

As I would like to check this in College ,There is One more thing I would like to know
In our College there's a lab with over 60 systems all connected in internet(Hope fully they are on same lan)
How can I check so that I connect all systems(or list of possible) to a common system (Maybethrough IP's )soo that all those systems can send their screens to the main system (The system which is selected will send the screen)

I'm confused. Are you displaying 60 different screen on one common PC, or displaying the one common PC on all 60 other PCs?
Either way you connect the sending & receiving PCs via a TCP/IP socket, either by host name or IP address. You can also use mDNS (same as Apple's Bonjour) to locate running servers to conect to.

It goes like this
Way one -
A Main User can select any of the 60 systems and view it and he can close it and select a new system
Or He can select to share his screen simuntaneouly to all 60 systems
I hope you get it

Wont sending 1screen to 60 systems(1by1) cause a lag in the perfomence
How to implement it in a better way

OK, The first case is no problem. Sharing to 60 systems simultaneously could be a problem of network bandwidth if there are 60 concurrent TCP/IP connections all sending screen images at full speed. You could use a MultiCast Socket, but that just supports UDP which is an unreliable protocol. Because you'll need to send incremental screen updates, that could be a problem, or maybe on a single LAN it will be OK. Needs some testing perhaps.

As when the 60systems would have their sendig thread idle most of the time
How About if it is implemented in a chain way like Main system sends screen to 1st system then 1st system to second ,then 2->3 like that so on so that the load decreases on the main system ?

I don't think load on the main system is the problem, but it's not hard to get a quick protoype (display only) working and try some of these ideas.

This article has been dead for over six months. Start a new discussion instead.