Client to Client protocol and DC++ implementation of it

Technical discussion about the NMDC and <a href="http://dcpp.net/ADC.html">ADC</A> protocol. The NMDC protocol is documented in the <a href="http://dcpp.net/wiki/">Wiki</a>, so feel free to refer to it.

Moderator: Moderators

Locked
seer_tenedos
Posts: 4
Joined: 2003-06-15 01:21

Client to Client protocol and DC++ implementation of it

Post by seer_tenedos » 2003-06-15 01:33

I am having problems with client to client communications with DC++ clients (when my client makes a connection to a DC++ client). I have had a look at serveral documents on the client to client documentation but the best i have seen is the following

Client <-> Client Communication in DC. 11-05-2002. By aDe
----------------------------------------------------------

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>|
D>U: $Get <filepath + filename in exact case>$<start at byte (1=beginning of file)>|
U>D: $FileLength <length of the requested file>|
D>U: $Send|
U>D: Data, in many chunks.
D>U: $Send| <- when 40906 bytes are sent, ask for more

My main problem is that no matter what i do the DC++ client never sends the $Get command. There are 2 possible problems that i can see. One is someone mentioned that multiple commands need to be send in one packet and another person said it was the order of the command.

i am basing mine off the order of commands as i don't currently have control over how many commands go in each packet. Is this a problem?

Also i found that the DC++ client will no send any commands to my client if i send my nick and then the lock. instead to get the DC++ client to respond i had to send my nick but no send my lock till i got he lock off the DC++ client. If i did that everything worked up to the $Get command.

Peopel have said that DC++ is cammand order sensitive maybe the order in the above Client to client protocol is incorrect for DC++. in which case does someone know the correct order?

I am really stuck on this as nothing i do will get DC++ to send the $get request.

seer_tenedos
Posts: 4
Joined: 2003-06-15 01:21

Post by seer_tenedos » 2003-06-15 02:36

solved part of the problem with the communication stuffing up when i send botht he nick and lock at the start. Found out in another post tht the ver of DC++ i was running had a problem with dual processors. I am now connecting to a PC without dual processors but i am still getting stuck when it comes to the $Get request.

just solved the last part. the protocol doc is missing the second direction command. it only slows one direction command been send but both sides need to send a direction command.

OLDoMiNiON
Posts: 202
Joined: 2003-01-06 06:22
Location: Salford, England.
Contact:

Post by OLDoMiNiON » 2003-06-15 05:07

There is a 100% complete DC protocol document somewhere. but i can't remember the web address :(

TheParanoidOne
Forum Moderator
Posts: 1420
Joined: 2003-04-22 14:37

Post by TheParanoidOne » 2003-06-15 05:12

OLDoMiNiON wrote:There is a 100% complete DC protocol document somewhere. but i can't remember the web address :(
Here?
The world is coming to an end. Please log off.

DC++ Guide | Words

OLDoMiNiON
Posts: 202
Joined: 2003-01-06 06:22
Location: Salford, England.
Contact:

Post by OLDoMiNiON » 2003-06-15 05:13

No, Here ;)

OLDoMiNiON
Posts: 202
Joined: 2003-01-06 06:22
Location: Salford, England.
Contact:

Post by OLDoMiNiON » 2003-06-15 05:14

Well, technically Yes, but mine was a direct link :P

Locked