Compleate DC Protocol Documentation
Moderator: Moderators
Compleate DC Protocol Documentation
I have put together a *near* complete protocol doc from all the other docs on the internet aswell as some of my own research. Check it out and let me know if i missed anything or if there are errors (including spelling )
Hope this helps someone!
http://1stleg.com/download/Documents/DC Protocol.rar
Hope this helps someone!
http://1stleg.com/download/Documents/DC Protocol.rar
Sid
[email protected]
http://www.1stleg.com
[url=dcHub://Greed.1stleg.com]dcHub://Greed.1stleg.com[/url]
[email protected]
http://www.1stleg.com
[url=dcHub://Greed.1stleg.com]dcHub://Greed.1stleg.com[/url]
Correct Link
Here is the working link for those who are to lazy to copy paste
http://1stleg.com/download/Documents/DC%20Protocol.rar
http://1stleg.com/download/Documents/DC%20Protocol.rar
Sid
[email protected]
http://www.1stleg.com
[url=dcHub://Greed.1stleg.com]dcHub://Greed.1stleg.com[/url]
[email protected]
http://www.1stleg.com
[url=dcHub://Greed.1stleg.com]dcHub://Greed.1stleg.com[/url]
nice :)
looking good!
I took the liberty of correcting some errors and adding a few comments.
also I added formatting through css, now all commands and variables are fixed width (and colorized).
http://wza.digitalbrains.com/DC/doc/
looking good!
I took the liberty of correcting some errors and adding a few comments.
also I added formatting through css, now all commands and variables are fixed width (and colorized).
http://wza.digitalbrains.com/DC/doc/
http://dc.selwerd.nl/hublist.xml.bz2
http://www.b.ali.btinternet.co.uk/DCPlusPlus/index.html (TheParanoidOne's DC++ Guide)
http://www.dslreports.com/faq/dc (BSOD2600's Direct Connect FAQ)
http://www.b.ali.btinternet.co.uk/DCPlusPlus/index.html (TheParanoidOne's DC++ Guide)
http://www.dslreports.com/faq/dc (BSOD2600's Direct Connect FAQ)
The nickname length is limited by individual hubs - in my hub you can set it between 5 and 40 characters. The nickname can contain any character except for space, $ and | AFAIK.<nick> is the user's username. This must not contain a space (the NMDC server converts any spaces to underscores and allows the login to proceed using the corrected username). XXX what's the max length of a username? are ascii-z allowed? /sed
NMDC hub answers with $HubIsFull even beforet the nickname is sent. Other hub implementations usually wait until the nickname is validated and then decide whether to let the user in or to disconnect him.(I'm not sure what the correct series of messages is if the server is full and a nick with a password is sent in the $ValidateNick. Should it be rejected immediately with $ValidateDenide? Or answer with a $BadPass?)
You could also add $SR - passive search result to the client-server protocol spec. The format (as received by the hub) is:
$SR <nick1> <result><size> <free slots>/<total slots><hub name> (<hub IP>)<nick2>
= ASCII 5
<nick1> is the user who responded to the search
<result> is the search result
<nick2> is the user who searched
The search result should be sent to <nick2>, but without the <nick2> at the end.
hmm.. I did some testing.. and all characters I tried are fine in both DCH++ and nmdch. but the User Menu Item (custom menu's) did not copy the exact name, so I got "user is not online", both with the +userinfo (dch++) and some standard userinfo vbscript (nmdch). luckily the Kick function worked properly (again in both hubs).ender wrote:The nickname can contain any character except for space, $ and | AFAIK.
maybe it would be wise to block all characters below 0x20.
will doender wrote:You could also add $SR [snip]
http://dc.selwerd.nl/hublist.xml.bz2
http://www.b.ali.btinternet.co.uk/DCPlusPlus/index.html (TheParanoidOne's DC++ Guide)
http://www.dslreports.com/faq/dc (BSOD2600's Direct Connect FAQ)
http://www.b.ali.btinternet.co.uk/DCPlusPlus/index.html (TheParanoidOne's DC++ Guide)
http://www.dslreports.com/faq/dc (BSOD2600's Direct Connect FAQ)
I found some errors in the client-client description:
Should be:
U>D:$Direction Upload <anumber>|$Key <key for D's lock>|
One single "$Send|" should be it!
(ACTIVE FILE DOWNLOAD
----------------------
D = downloader
U = uploader
H = hub
D>H: $ConnectToMe <U's username> <D's IP and port>|
H>U: $ConnectToMe <U's username> <D's IP and port>|
U>D: Connection
U>D: $MyNick <U's nick>|$Lock <new lock with pk>|
D>U: $MyNick <D's nick>|$Lock <new lock with pk>|$Direction Download <anumber>|$Key <key for U's lock>|
U>D: $Key <key for D's lock>|
Should be:
U>D:$Direction Upload <anumber>|$Key <key for D's lock>|
Wtf? I've never seen this?(...)
D>U: $Send|
U>D: Data, in many chunks.
D>U: $Send| <- when 40906 bytes are sent, ask for more
One single "$Send|" should be it!
I wrote QuickDC - A DC++ compatible client for Linux and FreeBSD.
-
- Posts: 506
- Joined: 2003-01-03 07:33
First of all, thank you very much for this documentation! It's great!
Second, I wonder whether I can find a similar documentation of all (or some) extensions made to the protocol? I know DC++ has quite a few features that aren't mentioned in the document above, and I suppose there are a few hubs out there that also have their own set of features?
/Anders
Second, I wonder whether I can find a similar documentation of all (or some) extensions made to the protocol? I know DC++ has quite a few features that aren't mentioned in the document above, and I suppose there are a few hubs out there that also have their own set of features?
/Anders
-
- DC++ Contributor
- Posts: 3212
- Joined: 2003-01-07 21:46
- Location: .pa.us