AMule

aMule is a free peer-to-peer file sharing utility that works with the eDonkey network and the Kad network, offering similar features to eMule and adding others such as GeoIP (country flags). On August 18, 2003 it was forked from the xMule source code, which itself is a fork of the lMule project, which was the first attempt to bring the eMule client to Linux. These projects were discontinued and aMule is the resulting project, though aMule has less and less resemblance to the client that sired it.

aMule shares code with the eMule project. The credit and partials downloads of eMule can be used by aMule and vice versa, making program substitution simple.

aMule aims to be portable over multiple platforms and is doing this with the help of the wxWidgets library. Currently supported systems include Linux, macOS, various BSD-derived systems, Windows, Irix and Solaris. Beside the stable releases the project also offers SVN versions as an unstable release.

TCP and UDP ports
According to the aMule official FAQ, these are the default ports. Server ports 4661 TCP and 4665 UDP are only used by the EDonkey network. Therefore, the Kad Network will only use 4662 TCP and 4672 UDP. The traffic direction is from client perspective:
 * 4661 TCP (outgoing): Port on which an eDonkey server listens for connection (port number may vary depending on eDonkey server used).
 * 4662 TCP (outgoing and incoming): Client to client transfers.
 * 4665 UDP (outgoing and incoming): Used for global eDonkey server searches and global source queries. This is always Client TCP port + 3.
 * 4672 UDP (outgoing and incoming): Extended aMule protocol, Queue Rating, File Reask Ping
 * 4711 TCP: WebServer listening port. Used if aMule is accessed through the web.
 * 4712 TCP: internal Connection port. Used to communicate aMule with other applications such as aMule WebServer or aMuleCMD.

Most of these ports are customizable.

Monolithic and modular build
aMule can be compiled using -disable-monolithic parameter: this allows aMule to be run in a modular way. This means that the core functionalities of the program can be started using, the aMule daemon while the software behavior can be controlled through three different interfaces:
 * aMuleCMD: The command-line aMule client.
 * aMuleGUI: The regular GUI of the software. Experimental, a lot of features missing in comparison with the monolithic version and is unstable. There are Linux and Windows version for this tool: users can connect an aMule instance running on Linux from a workstation running Windows and the Win32 version of aMuleGUI.
 * aMuleWEB: The web interface provided by the aMule core built-in Webserver. It can be retrieved via the LAN or from the Internet, provided any Internet router is properly configured using port forwarding.