An Intermediate QtNetwork chat application.
I'm using C++11 and threads, so 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
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
Nope. I'm working on it.
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 ;)