DC++

**DC++** ir atvērtā pirmkoda vienādranga failu apmaiņas klients Microsoft Windows operacionālajai sistēmai, ko var lietot Direct Connect tīklā. Lai arī nav precīzas statistikas, tiek uzskatīts, ka DC++ ir populārākais no izmantotajiem Direct Connect klientiem.

DC++ tika izstrādāta kā atvērtā pirmkoda alternatīva oriģinālajam Direct Connect klientam NeoModus Direct Connect (NMDC). Tas var pieslēgties tiem pašiem Direct Connect centrmezgliem un lieto to pašu failu apmaiņas protokolu. Galvenā atšķirība bija tāda, ka DC++, atšķirībā no NMDC, nebija reklāmprogrammatūra.

Vēlāk ir radušies arī daudzi citi Direct Connect klienti, kas ir balstīti uz DC++ bāzes, piemērām, RevConnect, kura galvenā priekšrocība ir spēja lejuplādēt vienu un to pašu failu vienlaicīgi no vairākiem lietotājiem.

## Protokols
Klienti sākumā pieslēdzas serveris (hubam), un nosūta datus par sevi (svarīgākie no tiem ir: IP adrese un ports (DC++ lieto gan TCP, gan UDP); un lietotāja vārds (*nickname*)). Tālākās funkcijas ir atkarīgas no tā vai lietotājs ir aktīvais (ir norādījis derīgu IP adreses un porta kombināciju, un viņam var pieslēgties no ārpuses) vai pasīvais (nav norādījis derīgu IP adreses un porta kombināciju un viņam no ārpuses pieslēgties nevar). Programmas funkcijas:
* Lejupielādēt failu no lietotāja ar zināmu lietotāja vārdu. Vēl ir jāzina ceļu (*path*) līdz failam attiecīgā lietotāja failu sarakstā (*file list*). Jebkurā gadījumā otra lietotāja IP adresi un portu uzzina caur serveri.
** Aktīvie lietotāji caur serveri otram galam pieprasa atvērt savienojumu uz šo galu. Caur šo savienojumu tālāk tiek pieprasīts attiecīgais fails (tieši no otra gala lietotāja) un caur savienojumu arī notiek datu pārsūtīšana. Šis process neatšķiras, vai otrā galā ir aktīvais vai pasīvais lietotājs.
** Pasīvie lietotāji caur serveri uzzina otra gala lietotāja IP adresi un portu un atver savienojumu (jo pasīvie lietotāji paši nevar saņemt ienākošos savienojumus), caur šo savienojumu tad pieprasa un saņem attiecīgo failu. Pasīvie lietotāji nevar lejupielādēt failus no citiem pasīvajiem lietotājiem.
* Faila augšupielāde vienmēr sākas ar to, ka otrs gals pieprasa attiecīgo failu. Maksimālo vienlaicīgi augšupieldējamo failu skaitu nosaka slotu skaits, to norāda programmas konfigurācijā.
* Meklēšana - failus var meklēt pēc atslēgvārda, izmēra un/vai kontrolsummas (TTH)(*hash*).
** Aktīvie lietotāji - meklēšanas pieprasījumu nosūta serverim, kas to tālāk pārsūta visiem lietotājiem. Lietotāji, kam ir prasībām atbilstoši faili, sūta atbildes sākotnējam lietotājam (uz UDP portu).
** Pasīvie lietotāji - meklēšanas pieprasījumu tāpat nosūta serverim, un tas arī tiek pārsūtīts tālāk, taču lietotāji atbildes sūta nevis tieši sākotnējam lietotājam (jo tur neko nevar nosūtīt), bet gan serverim. Šī metode rada ievērojami lielāku slodzi serverim, tāpēc tai ir ilgāki laiki starp meklēšanām, vai arī to atslēdz pavisam.
* Ziņojumu nosūtīšana - visi ziņojumi citiem lietotājiem iet caur serveri. Šeit ir pieejami gan globālie ziņojumi (publiskā tērzētava), gan privātie ziņojumi. Privātie ziņojumi tāpat iet caur serveri un servera administratori tos redz.

*File list* ir kopīgoto failu saraksts. Kopš apmēram 0.4 DC++ versijas tas ir ar bz2 algoritmu kompresēts XML fails. Tur ir visi koplietotie direktoriji, to apakšdirektoriji un tajos visos esošie faili (nosaukums, izmērs un TTH). Failu listes faila augšupielādei parasti ir pieejami papildu 3 sloti.

## Ārējās saites
* DC++ oficiālā tīmekļa vietne