talk is instant messaging program in text mode that was introduced in UNIX systems in 1983. Basically it allowed different users on different machines to talk. This system was substituted with time by IRC βit appeared in 1988β and it in turn gave way to the multiple instant messages system that exist nowadays.
Since we are using C++11 and threads, we need to add these directives when compiling: -std=c++11 -pthread
For example:
g++ -std=c++11 -pthread socket.cpp main.cpp
You can also use qmake (non qt5's qmake may generate errors)
qmake talk.pro
make
Most people found terminal uncorfortable, so in Talk 1.2 you can use a GUI for interact with others!
- The whole code have been redistributed.
- A server mode have been implemented.
- Now messages are send to the multiple users connected to the same server.
- Support to terminal arguments.
- Usernames allowed.
- Signal handling.
- Messages are saved on a history.
The program now requires of bash arguments, please check them below:
- -h --help Display help message.
- -s --server Enter server mode.
- -c --client IP Enter client mode and connect that ip (port required).
- -p --port PORT Specify port for listening / connecting.
- -u --user USER Specify sender's name.
If you want to test it locally just follow this steps:
- Compile the program.
- Launch an instance in server mode and listen to a free port (./ talk -s -p 8000).
- Launch another instance in client mode with ip 127.0.0.1 and the same port (-c 127.0.0.1 -p 8000).
- Start messaging!
- The program communicates through SOCKETS.
- The communication is TCP.
- The messages' structures are, by now, just strings.
- Communication is also asynchronous due to the use of threads.
- You can host your own server, and all the users connected to you will see all the messages.
- Usernames are allowed!
- Also supports system's signals (sigterm, sighup...).
- History implemented under ~/.talk !
- Compile.
- Execute talk with -s.
- Tell your friends your IP and the port talk showed on the screen.
- Talk with every one.
- For existing just write
/quit
or pressCTRL+D
.
- Compile.
- Execute talk with the IP and the PORT your friend told you. -c IP -p PORT.
- Talk with every one!
- For exiting just write
/quit
or pressCTRL+D
.
If you didn't specified your username with -u USERNAME when launching talk, it will be the one on your $USER environment variable.
Feel free to check it on -h --help
No, I'm following whatsapp babysteps.
The messages are saved on files. The history size will be as much 1MB. (It works as a circular buffer). You can found your histories on ~/.talk/username.log
Here are a few screenshots, hope you like them:
No, I know that there are terminal lovers out there (as the truth), you can keep using talk as always ;)