A simple chat messaging program using UNIX TCP sockets across a local network with several features.
- Compile the respective programs. For e.g., using gcc:
gcc deliver.c -lpthread -o deliver
andgcc server.c -lpthread -o server
Ensure to compile using threads - Get the current local IP . For e.g., using curl:
curl ifconfig.me
- Run the compiled
deliver
andserver
programs on the same network
Use the following syntax to run the programs:deliver
andserver <port number>
- Login through
deliver
You can use these logins provided inserver.c
User | Password |
---|---|
Yash | 000 |
James | 123 |
jim | 456 |
bob | 789 |
- Use the login command with the following syntax:
/login <User> <Password> <local IP/server address> <port>
The server does not need any login and should be already running (see step 3) - Multiple users may connect to the same server (repeat steps 3 for
deliver
)
- Server registers new users to a database and assigns a unique ID
- Server maintains a database of IDs and passwords for login
- When a client logs in, a bind is created between the client and the server until the client disconnects
- Client to client communication is passed through the server
- Server manages input and distribution of chat messages
- Special commands and room creation
- Server tracks created rooms and allocation of users in each room
- Invite users to rooms with an invite
- Change the colour of your name
- Console colours for ease of differentiating unique types of messages
- Multiple receive threads initiated as needed
List of valid commands:
/help
/createsession <roomname>
/joinsession <roomname>
/leavesession <roomname>
/leaveallsessions
/quit
/logout
/list
/colour <red, green, yellow, blue, purple, cyan, white>
/time
/invite <name> <roomname>