From MLDonkey
Jump to: navigation, search

Direct connect is a file sharing protocol based on servers (called hubs) run by volunteers. Thus you only share your files with the people connected to the same hubs as you are. The people running hubs usually set up lots of rules about who can connect to their hub, for example a minimum amount of shared files, open slots for connections, ban some material (eg. child pornography) etc. This is good because is gets rid of a lot of leechers. (people who just download, don't share).



Feature Reference Support
Direct Connect  ? 2.8.7
IPv6 No
Tiger Tree Hashing TTH Yes
Advanced Direct Connect ADC No
XML hublists 3.0.2
Magnet links 3.0.3
Port forwarding UPnP/NAT-PMP 3.0.6


Get the list of available dc commands with ?? dc.

Basic use cases:

See also


Here is an IRC log to be used as first step documenting this new module:

Apr 29 20:13:11 <Alffa> Hello MLDonkeyers...
Apr 29 20:13:47 <Alffa> I was wondering if anybody has interest for DC++ for MLDonkey
Apr 29 20:15:07 <Alffa> I have been using the version what I have been programming from start of this year, and now I am in personal situation that I no longer continue
Apr 29 20:18:31 <Alffa> so If someone of the devs likes to get the source, it is on 2.8.3 CVS but I have no knowledge how to transfer it anywhere 
Apr 29 20:20:08 <spiralvoice> Alffa: create a patch against the CVS version you build it upon and send the patch to Savannah:
Apr 29 20:20:52 <spiralvoice> Alffa: I can not guarantee you that it will be included into CVS nor that it will be developed further, but having it on Savannah opens all oppurtunities;-)
Apr 29 20:21:00 <Alffa> I need direct help cause I dont remeber enymore even how to use CVS or how to transfer it
Apr 29 20:21:43 <Alffa> It works for me fully but if others get something out of it, it would be enough for me...
Apr 29 22:28:59 <Alffa> if you get it to compile, it works in web interface and with "dc" you get the menu... 
Apr 29 22:32:53 <Alffa> in configs there are many settings... hublists address etc.
Apr 29 22:35:36 <Alffa> in options I meant
Apr 29 22:39:29 <Alffa> if you have VIP for hubs, you have to directly put the password in directconnect.ini-file
Apr 29 22:44:34 <spiralvoice> Alffa: are there any differences/lacking features in your MLDonkey DC++ module compared to official DC++ clients?
Apr 29 22:45:06 <Alffa> I tried to make it a copy of DC++ Win client
Apr 29 22:48:41 <spiralvoice> Alffa: your code requires Bzip2?
Apr 29 22:48:48 <Alffa> yes
Apr 29 22:49:51 <spiralvoice> Alffa: is this a requirement of DC++? In MLDonkey bzip2 is optional, in order to include your code I have to make a choice, change your code to let it optionally use bzip2 or make bzip2 a manditory dependency
Apr 29 22:50:28 <Alffa> you cant open hublists if there is no bzip2
Apr 29 22:51:02 <Alffa> also filelists are in bzip2
Apr 29 22:54:13 <spiralvoice> ok, then I´ll change to disable dc++ if no bzip2 is found
Apr 29 22:55:00 <spiralvoice> Alffa: does your dc++ code have filesize limits? Did you download files > 4GB with it?
Apr 29 22:57:06 <Alffa> biggest what I have downloaded are < 1G
Apr 29 22:58:03 <Alffa> so I cant say for sure
Apr 29 22:58:31 <Alffa> In code itself I dont remember any that kind of limits
Apr 29 23:00:13 <spiralvoice> Alffa: does the C hash code support large files? Is che3 the hash code of dc++?
Apr 29 23:00:37 <Alffa> In DC++ there are users that share 1-5 Tbytes of data... in these cases filelists are so big that web interface basicly jams...
Apr 29 23:17:15 <Alffa> you can filter the list with: dchublist show filteringword filteringword ...
Apr 30 00:27:07 <spiralvoice> ok, got 2910 hubs
Apr 30 00:33:53 <spiralvoice> I added several hubs, they are now in state "Waiting"
Apr 30 21:57:13 <spiralvoice> Alffa: do you have mem leaks with your patch?
Apr 30 21:57:56 <spiralvoice> Alffa: "dc", Shared - displays the share list twice
Apr 30 21:59:40 <Alffa> actulally no, it just shows all files first that are globally shared and the second list is what filres are hashed with tigertree
Apr 30 22:00:27 <spiralvoice> Alffa: is there a time when the lists are not the same?
Apr 30 22:00:52 <spiralvoice> Alffa: EDK shares are shown only once, when the hash is not yet known there is no EDK link displayed
Apr 30 22:02:42 <Alffa> the sharing is somewhat a mess... that was the worst part to code in ... 
Apr 30 22:03:22 <spiralvoice> same for EDK, I tried once to implement storing total upload values, to be reloaded later
Apr 30 22:03:36 <spiralvoice> I already saw you created a new ini file for shares;-)
Apr 30 22:03:44 <Alffa> I decided to make a duplicate system for dc shares... there is a good job to unify the sharing properly
Apr 30 22:04:42 <Alffa> yes, with my skills and understanding of the common code that was my implementation
Apr 30 22:05:06 <Alffa> I dont like it but didi not know other way to do it
Apr 30 22:06:09 <spiralvoice> Alffa: I do not like the handling of shares in MLdonkey as a whole, shared_files_new.ini is EDK-only, shared_files.ini for Gnutella/G2/Fasttrack (handled by commonShares?)
Apr 30 22:06:18 <spiralvoice> its a mess
Apr 30 22:06:28 <spiralvoice> but if your DC++ code works, its ok for me
Apr 30 22:07:36 <spiralvoice> Alffa: can you now help me using dc++? I never used that network. a hublist is loaded and some shares are hashed, what to do next?
Apr 30 22:07:42 <Alffa> I agree that someone should check the sharing code from the roots... I had very hard time with understanding the operation atm.
Apr 30 22:07:50 <spiralvoice> Alffa: ah, and the dc++ port is opened and forwarded
Apr 30 22:08:25 <Alffa> then you have to connect to a server/hub
Apr 30 22:08:41 <Alffa> if you list the hublist there is add button
Apr 30 22:08:45 <spiralvoice> Alffa: do I need to register with a hub before connecting with MLDonkey?
Apr 30 22:09:00 <Alffa> when yuou add the hub it shows in global servers list
Apr 30 22:09:21 <Alffa> no, only if there is limits in the huib itself
Apr 30 22:09:25 <spiralvoice> Alffa: I did that yesterday evening but the hubs stayed in status "Waiting" for several minutes, then I went to bed;-)
Apr 30 22:09:26 <Alffa> and there usually are
Apr 30 22:09:55 <Alffa> like you have to share enough or you have to have enough open slot etc.
Apr 30 22:10:44 <spiralvoice> Alffa: I added 8 hubs, thry are all in state waiting now, should I add more hubs?
Apr 30 22:11:19 <Alffa> the "waiting" means that the server/hub is like in your favourites list and doing nothing
Apr 30 22:12:21 <Alffa> you have to connect to it from global server ist and if it connects it shows in global servers list "connected" and in dc hub list "user" or "op"
Apr 30 22:13:08 <Alffa> there is no limit for hubs, you can add as meny you think are usable to you
Apr 30 22:13:16 <Alffa> like favourites list ...
Apr 30 22:14:04 <Alffa> also if the hub is really connected the "open chat" should blink and you should be able to read server messaeges
Apr 30 22:16:29 <spiralvoice> I connected to my machine from an outside server on DC-client_port using telnet and got a connection, I could see this telnet connection also in a locally run "ngrep port xxxx"
Apr 30 22:16:42 <spiralvoice> but I can not see any connection attempts from MLDonkey to a hub
Apr 30 22:17:23 <Alffa> it only tries to connet when you click in global server list the button "conn"
Apr 30 22:18:06 <Alffa> also, if you set the autoconnect state in hub list on, it tries automatically connect to server until it connect forever
Apr 30 22:19:32 <spiralvoice> looks better, now I see lots of traffic
Apr 30 22:20:37 <spiralvoice> now I am connected to 9 hubs, what next?
Apr 30 22:22:17 <Alffa> then you search :)
Apr 30 22:22:26 <Alffa> and check results
Apr 30 22:22:40 <Alffa> and monitor the servers how they react to you...
Apr 30 22:23:02 <Alffa> some operators are very picky about who connect and what you share :)
Apr 30 22:23:13 <spiralvoice> [dcInt] Exception Failure("Buffer.add: cannot grow buffer") in printing users
Apr 30 22:24:12 <spiralvoice> dcusers fails
Apr 30 22:24:46 <spiralvoice> Alffa: its a known limit, a buffer can store 16MB, not more:
Apr 30 22:25:35 <Alffa> perhaps if you have huge amount of user (like when you connet to many hubs) I havent tested that extensively
Apr 30 22:25:45 <Alffa> for me 1500 users are a lot :)
Apr 30 22:26:07 <Alffa> but I am in a hub where peaople share terabytes 
Apr 30 22:26:07 <spiralvoice> I was connected to 10 hubs with ~5000 users each
Apr 30 22:26:24 <Alffa> ok perhaps that is too much :)
Apr 30 22:26:24 <spiralvoice> i disconnected some hubs and it works now, but the list is still huge
Apr 30 22:26:43 <Alffa> perhaps there should be coded some kind of limit to users :)
Apr 30 22:26:46 <spiralvoice> firefox uses 500MB RAM
Apr 30 22:27:18 <Alffa> dc++ uses A LOT if traffic, if there are many userss
Apr 30 22:27:28 <Alffa> all searches come to all users
Apr 30 22:27:40 <Alffa> so there moves a lot of search data
Apr 30 22:27:47 <spiralvoice> ok, I disconnected from all but one hub
Apr 30 22:28:10 <Alffa> try to find a hub or couple where yuou find enough results
Apr 30 22:28:39 <Alffa> basicly hubs where are small number of users but with big shares are best
Apr 30 22:28:57 <Alffa> also if you share a lot you are welcomed better hubs
Apr 30 22:29:05 <Alffa> that is the culture of dc++
Apr 30 22:29:45 <Alffa> also it wont hurt to "know" someone and get operator passwords to the best hubs
Apr 30 22:29:56 <spiralvoice> I put 460MB in my share for testing dc++ atm
Apr 30 22:30:27 <Alffa> I share 450Gb and still get from some hubs "too low share limit"
Apr 30 22:31:42 <Alffa> now I have to excuse and go to bed... :) gn
Apr 30 22:31:53 <spiralvoice> I see some warnings in ngrep received from clients: "WARNING: Your client uses IP for downloading, while you have IP 84....."
Apr 30 22:32:19 <spiralvoice> the port is open and forwarded, do I need to setup something else?
Apr 30 22:32:55 <spiralvoice> ah, old problem, client_ip is only updated through EDK server connections
Apr 30 22:36:14 <spiralvoice> wow, received the first filelist
Apr 30 22:37:06 <spiralvoice> received the first file from dc++
Apr 30 22:50:47 <spiralvoice> gn

LanguagesEnglish  • Русский

Personal tools