Hey everyone,
I'm trying to write a networked drawing program to allow users to draw with each other in a realtime, shared, mspaint-like environment. Right now the project is just in its initial stages and I'm trying to set up a way for the application to store the image internally and handle updates to it. What I'm thinking is that each session will have it's own canvas which will be stored on the server, probably as a BufferedImage object. I want the clients to have access to the standard Graphics API though so I'd like them to have their own local BufferedImages which they can draw on... unless there's a way to just access the Graphics object for the image over the network and run commands on it directly?

So that's one problem I guess. The other part though is that I want to have a way for the server to send it's image data to the clients so that everyone in the session is on the same page. I'm afraid that if i try to send a copy of the entire image every time the image is updated (which in theory would be after every pixel is drawn with something like a pen tool), it'll take up too much bandwith. So, what i'm looking for is a way to extend BufferedImage maybe in a way that it can realize which pixels have been modified and then I can just send individual pixel data (maybe in small groups though) to the clients which can just use a setPixel method to make the appropriate updates. So that's my story

Any advice, suggestions, or answers would be really appreciated! Thanks everyone
