Hmm. I don't think anyone wants to have messages get lost. lol
TCP/IP would work better imo. As for what to support... Several programs support both Mudmaster and zChat, but short of asking the creator of mudmaster for specs, there doesn't seem to be any available. However.. Looking at a copy of mcl to get a clear idea as to what is going on, it seems that mud master's chat protocal has some complications. The least of which being that is uses a termination character, rather than a 'length of data' field, but if it is supportable.... I do think zChat is the better one though. Basically it would be nice to not have a mushclient specific chat. Doing so kind of defeats the whole point of what the person who started this thread was intending to do, which is to chat with MudMaster or zChat clients.
Interestingly it could 'almost' be implimented using a second world and scripting. 'Almost' because one thing it needs is to keep track of all the IPs to send data to, so a script based one would only work to talk to one other person, who's 'full' client would have the burden of passing on any traffic from you to everyone else. Assuming of course that the full clients even try to echo packets to others. There is nothing in the spec suggested that they do, should, can or will.
My only major gripe with zChat is the same as with FTP in most browsers, the file transfer they support.. What is it with people designing things and leaving out simple and necessary stuff? In the old days you had ANSI and it was good, until someone remapped F1 to be FORMAT C:.
Nothing changed (i.e. no one bothered to provide a subset of ANSI or limit such remappings to the user end). Someone built file tranfer protocals and they where good. Until you had to restart a six hour download from the beginning for the 14th time. Eventually someone came up with YModem (pretty good, if you could stay on the full 6 hours, but..) and then finally ZModem. Then TCP/IP and the net is introduced and... we are right back to having no 'resend last packet' support. It bugs the hell out of me.
If you did impliment file tranfer support through the connection, I would suggest using something a bit like ZModem did. I.e. ignore the existing file commands in the spec, and add a new set of commands (like 512,513,514, etc.) that do the following:
512 File send request:
Same as existing spec.
513 File Deny:
Same as existing spec.
514 File Block Request:
Same as existing spec.
515 File Block:
Sends an incremental CRC as the first 2 bytes, which
is checked by the CRC computed in mushclient, from the
previous CRC and the data in this 1024 byte (1026
counting the CRC) packet.
515 File Cancel:
Same as existing.
516 File Resend From:
Sends a block number to restart from, when a CRC fails.
This also provides (in theory) the means to store the
file name, current CRC and block number, so one can
continue downloading later, but that is probably not
needed.
This is the only thing about the zChat spec I thought was bad. Though apparently there is also a flaw in the initialization, where security data isn't terminated correctly. Why Zugg didn't provide a 'length' field for that, like everything else, I have to wonder. |