summaryrefslogtreecommitdiff
path: root/dat/ncdc.md
blob: 55b8e0c84cbbcce88ce469ec43a699959bc12c0d (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
% NCurses Direct Connect

Ncdc is a modern and lightweight direct connect client with a friendly ncurses
interface.

## Get ncdc!

Latest version
:   1.22.1 ([ncdc-1.22.1.tar.gz](/download/ncdc-1.22.1.tar.gz)
    \- [changes](https://dev.yorhel.nl/ncdc/changes))

    Convenient static binaries for Linux:
    [x86-64](/download/ncdc-linux-x86_64-1.22.1-1-g7b4bd.tar.gz) -
    [i486](/download/ncdc-linux-i486-1.22.1-1-g7b4bd.tar.gz) -
    [ARM](/download/ncdc-linux-arm-1.22.1-1-g7b4bd.tar.gz) -
    [AArch64](/download/ncdc-linux-aarch64-1.22.1-1-g7b4bd.tar.gz).  Check the
    [installation instructions](/ncdc/install) for more info.

Development version
:   The latest development version is available from git and can be cloned using
    `git clone git://g.blicky.net/ncdc.git`. The repository is available for
    [online browsing](https://g.blicky.net/ncdc.git/).

Requirements
:   The following libraries are required: ncurses, zlib, bzip2, sqlite3, glib2 and
    gnutls.

    Ncdc is entirely written in C and available under a liberal MIT license.

Community
:   - [Bug tracker](https://code.blicky.net/yorhel/ncdc/issues) - For bugs reports, feature requests and patches.
    - `adcs://dc.blicky.net:2780/` - For real-time chat.

Packages and ports
:   Are available for the following systems:
    [Arch Linux](https://aur.archlinux.org/packages/ncdc/) -
    [Fedora](https://apps.fedoraproject.org/packages/ncdc/overview/) -
    [FreeBSD](http://www.freshports.org/net-p2p/ncdc/) -
    [Frugalware](http://frugalware.org/packages?srch=ncdc&op=pkg&arch=all&ver=all) -
    [Gentoo](http://packages.gentoo.org/package/net-p2p/ncdc) -
    [GNU Guix](https://www.gnu.org/software/guix/packages/N/) -
    [Homebrew](https://formulae.brew.sh/formula/ncdc) -
    [OpenSUSE](http://packman.links2linux.org/package/ncdc) -
    [Source Mage](http://download.sourcemage.org/grimoire/codex/test/ftp/ncdc/)

    I have a few old packages on the [Open Build
    Service](https://build.opensuse.org/package/show/home:yorhel/ncdc), but
    these are unmaintained. The static binaries are preferred.

    A convenient installer is available for
    [Android](http://code.ivysaur.me/ncdcinstaller.html).

## Features

Common features all modern DC clients (should) have:

- Connecting to multiple hubs at the same time,
- Support for both ADC and NMDC protocols,
- Chatting and private messaging,
- Browsing the user list of a connected hub,
- Share management and file uploading,
- Connections and download queue management,
- File list browsing,
- TTH-checked, multi-source and segmented file downloading,
- Searching for files,
- Secure hub (adcs:// and nmdcs://) and client connections on both protocols,
- Bandwidth throttling,
- IPv6 support.

And special features not commonly found in other clients:

- Different connection settings for each hub,
- Encrypted UDP messages (ADC SUDP),
- Subdirectory refreshing,
- Nick notification and highlighting in chat windows,
- Trust on First Use for TLS-enabled hubs,
- A single listen port for both TLS and TCP connections,
- Efficient file uploads using sendfile(),
- Large file lists are opened in a background thread,
- Doesn't trash your OS file cache (with the flush\_file\_cache option enabled),
- (Relatively...) low memory usage.

## What doesn't ncdc do?

Since the above list is getting larger and larger every time, it may be more
interesting to list a few features that are (relatively) common in other DC
clients, but which ncdc doesn't do. Yet.

- NAT Traversal,
- OP features (e.g. client detection, file list scanning and other useful stuff for OPs),
- SOCKS support.

Of course, there are many more features that could be implemented or improved.
These will all be addressed in later versions (hopefully :).