Direct Client-to-Client (DCC) is an extension of Internet Relay Chat (IRC) that enables the ability to transfer files between users. It works by establishing a direct connection between yourself and another user allowing files to be sent to each other without the need for a 3rd party service.
DCC provides the ability for friends, family, and even complete strangers to exchange files without the worry of having to setup separate accounts on file sharing websites which tend to be slow or trusting their data to "the cloud."
When a file transfer is initiated, Textual sends information about yourself and the file to the person receiving it. This information includes your own IP address, the port on which to connect, the filename, and the total file size. Once the file transfer request is received, the person receiving it can either chose to accept the transfer or ignore it.
If they accept the transfer, their IRC client will attempt to establish a connection to the IP address and port that was included part of the transfer request. Once a successful connection is established, the file is sent.
Technically speaking, the sender of a file acts as a file server which the receiving user connects to.
When a file transfer request is received, it is placed within the File Transfers window. This window can be found by browsing to the main menu in the top left corner of the screen, selecting the Window menu, and selecting the item labeled File Transfers. It can also be accessed using the keyboard combination Control 5.
From within this window, file transfers which are being sent as well received can be managed.
By right clicking (or control clicking) one or more items in this window, a menu is presented which contains multiple actions which can be performed on each transfer. These actions include the ability to start and stop a transfer.
For visual reference, the File Transfers window looks similar to the following:
When sending a file, the person receiving it will have difficulties if you are on a wireless network.
This is because the receiver must establish a connection to you as the sender and to do so, they must connect to your Mac. However, being on a wireless network means that your Mac is not directly facing the Internet.
For a receiver to be able to connect to you, something known as port forwarding is required.
If you are only interested in receiving files, not sending them, then this does not apply to you.
There are two ways to send a file through Textual:
The first way is to right click (or control click) the nickname of the user you wish to send a file to. In the menu that appears, browse to the submenu labeled Client-to-Client. From within this menu, select the item Send file….
Alternatively, dragging any file on top of a nickname on the user list of a channel will send a transfer request.
Sending and receiving files between yourself and other users of Textual is supported on native IPv6. Support for it on other IRC clients is currently limited so it may not work if a file transfer is attempted with a user that is not on Textual.
Textual only provides support for native IPv6. IPv6 tunnels are not supported due to networking difficulties.
File transfers are not secure as no form of encryption occurs during a transfer. The contents of each file sent, is sent in plain text. This is an unfortunate side effect of DCC being designed in the early years of the Internet. For Textual to send file transfers securely, it would have to break compatibility with almost every IRC client that exists. However, that is not a very good user experience. Therefore, take precaution when sending or receiving files.
The following are common errors that can be encountered during a file transfer:
This error occurs when Textual tries to send a file but was unable to find a port which was open for listening.
This error occurs because Textual tried to access a file which may no longer exist or has inappropriate file permissions.
This error occurs when trying to send a file when the IP address of the sending machine is not available. By default, Textual tries to request the value of your IP address from an external source. However, sometimes this may fail. Restarting Textual may resolve this issue. If it does not, an IP address may need to be entered manually in Preferences.
This is a general error that can occur for multiple reasons. If this error occurs during a file transfer, then the sender may have cancelled the transfer or there was a slight Internet hiccup that could not be recovered from.
This error occurs when a connection cannot be established to the user sending a file. This is likely due to their Mac being behind a firewall or wireless network which is not forwarded properly.