Well for unix clients you can't send cp437 because the characters simply aren't present in the 8-bit fonts commonly used [you could send utf-8 i guess]
Anyway, I could probably write the code in platform-independent .NET which could run in mono.
Anyway, if you do insist on writing your own client, I recommend just extending the ANSI escape sequences considering there's already a reference server using telnet.
Btw, if the protocol requires sending those long strings, that's probably just bad.
What long strings? Oh, are you misinterpreting my description? Each "01 " is supposed to be one byte - not all of them are printable characters so i used a hex dump. "01 4F 18" in my protocol is the equivalent of "1B 5B 37 39 3B 32 34 48" [i.e. ESC[79;24H"] in ANSI.
For anything you'd actually be sending in ANSI, this protocol's version of that would be shorter - if you're sending a whole frame at a time in ANSI [rather than just updating the parts that change] and setting the attibutes for every character, that's up to eighteen kilobytes per frame, as opposed to six for my protocol's full-frame-update code. If you're sending less, less will be required.
And have you considered a black-and-white version? Removing color info (or limiting it in some way) removes a lot of the data, and should be good enough for spectating.
The problem with "extending the ANSI escape sequences" is that I would then have to implement all of the ansi escape sequences in the first place, which means more work, which means more time before we can even think about adding support for graphics etc.
Incidentally - how smart is your program about scrolling? Does it in any way know if the reason the screen is being redrawn is because everything in the main window is being moved ten spaces downwards because the user is scrolling up? That could be captured very efficiently in an extended protocol