dslreports logo


1. General

DC++ is an free open-source, ad and spyware-free client, written in C++ for the Advanced Direct Connect protocol. It also supports the depreciated original Direct Connect protocol (NMDC) which was originally developed by Jonathan Hess, the creator of the now extinct Neo-Modus client.  DC++ allows users to share files and chat over the Internet with other users.  Over the years, a plethora of features and advances in technology have been added.  Mr Hess has no influence over the current protocol or client at all.  Primarily the author of DC++, Jacek Sieka, and other core developers determine the course DC++ takes. For more information and documentation visit the following websites:

External Websites:
DC++ on Sourceforge (home page & downloads)
DC++ on Launchpad (bug tracker & support)
Online help
DC++ Blog
ADC Wiki
DC++ at Wikipedia


Historic & Geeky Information

DC++'s additional features over NMDC only clients (since the ADC protocol introduced):

•Support of a much more stable, secure and easily extensible ADC communication protocol.
•ADC provides the possibility of secure SSL encoded hub-client communication and file transfers.
•Users are identified by their client, not by their nick. It means that things like stolen nicks and multiply occupied slots by the same user from different hubs are over.
•Instead of fully downloading every time you are able to browse filelists. This can save a lot of time and bandwith.
•ADC provides limited capability of passive-passive downloads using NAT-Traversal
•You can create own / use an advanced default list of file extension groups to filter search results.
•ADC is fully unicode compatible so you can type any special letter to the hub mainchat or to the pm window, including cyrillic, kanji or any type of letters used in the world. They'll show correctly for every user of the hub.


Features - Configurable:


Logging (0.163) Log your downloads, uploads, system messages and various chat windows.
Automatic Share Refreshing (0.172) - Every hour DC++ refreshes your share content.
Automatically search for alternate download locations (0.173) - Allows DC++ to try to find other locations to download your files.
URL handler (0.18) URLS of the type dchub://, adc:// and adcs:// to open in DC++ from your browser. Links in main chat with www, http or ftp are automatically open in your default browser when double-clicked.
Slot Closing (0.20) - If a user leaves the hub DC++ will close his slots, if the user is back within 10 minutes DC++ will grant him a slot.
SFV checking (0.22) - Many downloads on DC contain an sfv file to check the integrity of a download. DC++ can on-the-fly calculate CRC-32 values for a file and compare it against the sfv file. If the check fails, the file is automatically downloaded once more from the same user and if that fails, the user is removed as a source.
Custom Descriptions (0.24) - Custom per-hub user description available for favorite hubs
ADL Search (0.24) - Tool for fast searching of directory listings downloaded from users
Network Statistics  (0.300)- Go to the View menu -> Network statistics
Selectable Hubs to Search (0.301) - You can choose which hubs you want to search in.
User Country (0.402) - Show the users country abbreviation in a column besides the IP field
UPnP Support (0.4033) - Able to configure your router to open up ports when needed to work in active mode.
Dupe file exclusion (0.40x) - Files with same TTH are automatically excluded from your share.
Shared files exclusion from downloads (0.666) - Option not to download files already in share (by TTH).
SSL encryption support (0.68) - Option for secure file transfers and communication.
Segmented downloads (0.700) - Download files from several sources at the same time.
Usage of Coral content distribution system for getting hublists (0.704) - Faster hublist download as well as reduce strain of hublist servers.
Built-in multilanguage support (0.705) - GUI and help are translated to many languages using custom supplied and community editable gettext po language files.
Settings stored in the Windows user profile (0.75) - Makes DC++ comply with the recent Microsoft standard of placing application data and eliminates UAC warnings and other problems under Windows Vista & 7.
Search results with same TTH are grouped (0.707) - Makes search results easier to manage as well as it makes possible to add all available sources at once when you want to download a result.
Bandwith limiter for file transfers (0.760) - If uploads slow down your downloads A LOT you may try this option.
Favorite hub groups (0.760) - Hubs can be grouped and groups are manageable in several ways.
Window manager (0.760) - Opened windows are kept across sessions as well as there's a history list available of recently opened windows.
Customizable search type extensions (0.770) - User configurable groups of file extensions usable to filter search results by file types.
Automatic connectivity setup (0.780) - Scuccessful automatic connectivity settings setup in most cases.
User matching (0.790) - Appearance and other settings by matching user properties such as nick.
Plugins (0.800) - Configurable plugin interface.

Features - Non-configurable:


Passive user detection (0.154) - Those that are behind a set of bricks are passive.
Banning Prevention (0.23) - If DC++ receives "banned" during the login phase, it'll stop automatically reconnecting
Anti-Fragmentation (0.241) - When downloading, it creates a file of the expected target size with unspecified content.
Tab Nick Completion (0.300)- Automatically completes the nickname you are typing by hitting TAB once the name is partially typed.
Command History Scrolling (0.302) - Use ctrl-up/down/home/end to view previous things typed.
File Hashing (0.307)Merkle trees and tiger hashing are used for file hashing.
Unicode support for queue and file list (0.4033) - The queue and file list can contain any special character encountered in file names, nicks, etc...
Browse file lists (0.670) - Instead of downloading whole file lists you can browse them and doing so only the required parts are downloaded.
CID for user identification (0.68) - More strict user identification to distinguish same users in different hubs and different users with same nicks.
Mandatory TTH based integrity check (0.696) - Provides 100% safe file identification and transfers, altough breaks compatibility with non-TTH based DC clients/versions.
Advanced TTH-leaf based resume & integrity check (0.700) - When downloading/resuming a file to ensure it contains no errors. If there is an error DC++ rolls back the segment.
Auto match search results (0.708) - Search results are matched to the download queue items and newly found sources are automatically added.
Possibility to recheck unfinished downloads (0.75) - Makes possible to regain the good parts of a corrupted partially downloaded file or salvage large files when the download queue is lost so you don't need to redownload large files from scratch.
NAT traversal to allow passive-passive connections (0.770) - Greatly improves connectivity by giving a chance of not properly configured clients to connect to each other.

Protocol Features:


NMDC Protocol

$MiniSlots (0.13) - Uploading filelists and files <16 kB to other DC++ users WITHOUT requiring a slot
$NoGetINFO (0.301) - A hub bandwidth easing feature for the hubs that support it.
$GetZBlock (0.302) - Sending files using dynamic compression
$UserIP (0.305)- Server side IP detection (automatically used if the IP field in settings is blank)
$NoHello (0.305) - A hub bandwidth easing feature for the hubs that support it. 
XmlBZList(0.307)- Sending file lists compressed

ADC Protocol

ADC Protocol (0.402) - A text protocol for a DC style network. Click the link for complete documentation and features.


Feedback received on this FAQ entry:
  • Second sentence: "depreciated" --> "deprecated"

    2012-12-25 01:10:08 (NoHereNoMo See Profile)

by USR56K See Profile edited by eMTee See Profile
last modified: 2012-11-05 12:01:40


ADC was created to allow an extensible protocol and to address some shortcomings of the DC protocol. It was initiated by Jacek Sieka, under the influence of Jan Vidar Krey's DCTNG draft. The first revision of ADC came in 2004 and the first official version in 2007-12-01.

External Websites:

 

A brief comparison of ADC vs NMDC is the following (Shamelessly taken from the ADC wiki):

ADC An actual official specification that clients must follow
ADC Token in search results and client-client connections.
ADC Referring URI when client is redirected
ADC A kicked client's transfers can be forcefully terminated by other users.
ADC A global identification scheme is possible.
ADC Out-of-the-box IPv6 support.
ADC Defined character escape sequence.
ADC Defined character encoding and normalization.
ADC Salted passwords during hub-client negotiation.
ADC Defined amount of search results per client mode (active and passive).
ADC Required that hubs and clients support hashes.
ADC Incremental client information.
ADC Searching for a file type does not depend on the remote client.
ADC Functionality for speaking in third person.
ADC Protocol delimiters: "\\", '\n' and ' ' (space)
ADC No port default
ADC Token determine download priority
NMDC The non-use of ' ' (space) as a delimiter, allowing less bandwidth for hub chat.
NMDC Protocol allowing, out-of-the-box, kicking and redirecting users from a client perspective.
NMDC ", '$' and ' ' (space)
NMDC Port default is 411 for hubs and 412 for clients.
NMDC "Highest random number" determine download priority

DC++ Change Log Related Entries:
0.770: Customizable search type extensions (emtee, poy)
0.770: NAT traversal to allow passive-passive connections (thanks cologic)
0.760: Allow hubs to send IPs of passive users via INF (poy)
0.760: Filter some status messages
0.760: Don't send commands that the hub has forbidden via STA (poy)
0.760: Handle self-QUI when sent before INF (thanks sulan)
0.760: Support the TS param of MSG (poy)
0.75: Validate utf8 before processing messages
0.75: Send only 5 results to passive users (thanks sulan)
0.705: Searches filtered by token if available so that each search window only gets its own results
0.705: Implemented test version of bloom filters which will dramatically reduce hub bandwidth usage for TTH searches
0.704: Update most things to ADC 1.0
0.703: Fixed issue adc connectivity when starting for the first time
0.701: Because certs are automagically generated, ADC transfers will now by default be encrypted if both clients use a recent version (see the cipher column to know)
0.700: Uninstaller removes adc registry key (thanks ullner)
0.699: [bug 1110] Added new adc hub list (thanks mafa_45); [ADC] Fixed client-to-client connection sequence
0.698: [ADC] Improved GFI command support; [ADC] Removed obsolete DSC command
0.697: [ADC] Fixed a few protocol issues
0.696: [ADC] Fixed support for uncompressed files.xml as well as proper files.xml.bz2 support
0.692: [bug 938] Added a few more ADC info fields (thanks ullner); [ADC] Allowed $ and | in nick/description
0.691: Fixed bug when sending active ADC search results; Updated to ADC 0.11; Passive users now also get ADC search results
0.69: Fixed ADC hubname display (thanks ullner); Fixed ADC op commands
0.685: Updated to latest ADC specs, this will break 0.68/0.681/0.6811 queue sources and fav users (for NMDC as well)
0.68: Added basic SSL encryption support
0.671: Updated to ADC 0.9.  Finished partial file lists for ADC
0.670:  ADC url's clickable (thanks naga), Added initial ADC file transfers support, ADC hub connectivity improved,  Download manager changes in preparation for partial list browsing and other ADC features. 
0.668:  Fixes to ADC implementation
0.4034:  More ADC fixes (thanks sed)
0.4033:  Various ADC patches (thanks sedulus),  ADC INF updates only send the necessary info (thanks sed)
0.4032:  Fixed an issue with the ADC parser (thanks trem),  Fixed an issue with the adc parser (thanks sed)
0.402:  Begun work on the ADC protocol (major change)

by USR56K See Profile edited by eMTee See Profile
last modified: 2012-11-05 12:10:54

Direct Connect v1 was released September 2001. It was the first client to implement the Direct Connect protocol, which John Hess created. The author decided to implement an Ad banner inside the client to help pay for expenses (aka Adware). This client will be referred to as NMDC throughout this FAQ.

Direct Connect v2 was released in July 2003. It kept the same look as version 1, fixed bugs and incorporated several DC++ features. This client will be referred to as NMDCv2 in this FAQ.

The Neo-Modus Direct Connect website was sold and is no longer is operational. While the NMDC client still works, you won't find anyone using it anymore. The DC++ client (and its mods) are now the de facto standard for the Direct Connect protocol.

 
Additional Information

by USR56K See Profile
last modified: 2009-01-14 15:06:21

A "hub" is a piece of software that routes chat and search requests/results and facilitates clients to connect each other. It's not called a server because it doesn't share any files. All file transfers are being made directly between clients, not through the hub.

One can find hubs to connect to through the various hublists available in the client. A list of alternative hublists can be found here.

Read this guide on how to set up your own hub.

by USR56K See Profile edited by JMGullett See Profile
last modified: 2007-01-29 14:08:25

An operator, aka OP, is a person who supervises relevance of chat and files being shared. Operators can temporarily or permanently remove irrelevant users by their own consideration. You can recognize operators from the key icon in the user list (some users with keys can be bots).

by USR56K See Profile edited by JMGullett See Profile
last modified: 2007-01-29 14:09:31

This FAQ is a collection that I've pulled together from many sources, including myself (USR56K / BSOD2600). The following have helped with its creation:

SourceForge DC++ FAQ (got me started with the basics before I restructured it)
•ButterflySoul
•Gadget
•SeeKay303
•tajisen
•Ender
•Studio
•HaArD
•mai9
•cologic
•Sedulus
•TheParanoidOne
•Ketsuron
•GargoyleMT
•eMTee

by USR56K See Profile
last modified: 2008-07-03 00:42:04

If you want help regarding any of the FAQs in this article, post them on the Filesharing Forum.



Feedback received on this FAQ entry:
  • give the reason and report on "why bzip2 used in dc++??"

    2012-11-04 08:14:10

  • Again, suggestions goes?

    2011-04-13 04:46:34

by USR56K See Profile edited by dbmaven See Profile
last modified: 2010-01-17 16:15:28