Protocol Changes [GENERAL]
Jens Wagner
jwagner "at" hexonet.de
Thu, 16 Mar 2000 14:20:21 +0000
Brandon Ibach wrote:
> Quoting rich "at" annexia.org <rich "at" annexia.org>:
> > The problem is that the VNC protocol isn't really very
> > extensible as it stands. I've been thinking about
> > this a lot too since I also need a way to be able
> > to extend the protocol for my own purposes.
> >
> > Things which are missing, and could usefully be added
> > if you decide to overhaul the protocol are:
> >
> > * Server -> client and client -> server negotiated
> > `features'. Note that there are features to be negotiated
> > in both directions.
> >
> > * Add a message length to each message so that you can
> > easily add extra fields to messages. This allows servers
> > and clients to synchronize with the message flow, even
> > if they have to ignore the extra fields.
> >
> Good thoughts. I had suggested at some point, possibly in a
> message that didn't make it to the list, that a future version of the
> RFB protocol (4.0?) take some ideas from PPP, particularly in the area
> of negotiation. ...
Hi (and excuse my english please)!
I don't think that we need a new version. As far as I know there is a
rfb-client-server-message called setEncodings [5.2.3]. It is used by the
client to tell the server which encodings it will support for framebuffer
updates, e.g. CopyRect, Hextile and so on.
Why not define a new encoding, e.g. 255 ? This wouldn't specify an
framebuffer encoding but tell the server that the client supports a
special message-type, e.g. 255, with the following structure:
ExtensionMessage
No. of bytes Type [Value] Description
1 CARD8 255 message-type
1 CARD8 padding
2 CARD16 ext-type-len
4 CARD32 ext-data-len
ext-type-len CARD8 array ext-type
ext-data-len CARD8 array ext-data
Now the server knows that the client supports encoding 255. But the
client doesn't still know wether the server will support that
message-type.
So if the server is able to handle ExtensionMessages it has to activate
this encoding. I think this could be done with such a message to the
client:
Type Value
CARD8 255
CARD8 0
CARD16 10
CARD32 length( ext-data ), e.g. 17
CARD8[] "available\n"
CARD8[] comma separated list of supported extension types,
e.g. "dragndrop,resize\n"
To let the server know which extensions the client supports the client
does also send such a message:
Type Value
CARD8 255
CARD8 0
CARD16 10
CARD32 length( ext-data ), e.g. 7
CARD8[] "available\n"
CARD8[] comma separated list of supported extension types,
e.g. "resize\n"
Now they could use the resize-Extension, however...
Any suggestions?
- Jens
---------------------------------------------------------------------
To unsubscribe, send a message with the line: unsubscribe vnc-list
to majordomo "at" uk.research.att.com
See also: http://www.uk.research.att.com/vnc/intouch.html
---------------------------------------------------------------------