https://github.com/arkasarkar19/ipc-multiuser-chat-system
Refer Readme.md
https://github.com/arkasarkar19/ipc-multiuser-chat-system
chat-system inter-process-communication mutex-synchronisation operating-system socket-programming threading
Last synced: 9 months ago
JSON representation
Refer Readme.md
- Host: GitHub
- URL: https://github.com/arkasarkar19/ipc-multiuser-chat-system
- Owner: ArkaSarkar19
- Created: 2019-10-29T15:38:02.000Z (over 6 years ago)
- Default Branch: master
- Last Pushed: 2020-06-18T08:06:59.000Z (almost 6 years ago)
- Last Synced: 2025-08-27T11:17:47.284Z (10 months ago)
- Topics: chat-system, inter-process-communication, mutex-synchronisation, operating-system, socket-programming, threading
- Language: C
- Homepage:
- Size: 9.77 KB
- Stars: 0
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# IPC-multiuser-chat-system
* Multi-user Chat System. The code is in C.
### IMPLEMENTATION
* The system consists of **server.c** and **client.c**. IPC sockets were used.
* Server treats every client differently creates a **thread** for each client so one or more clients can request the server at the same time.
* Server is constantly listening for new connections via the **accept()** system call. If a client requests to send a message the server uses the **recv()** system call to get the message and then uses **send()** system call to send it to the required client.
* Server keeps tracks of all the threads of the clients and once the server is terminated all the threads are wiped out one by one.
* Client has two different threads one for receiving and one for sending. The receiving thread is running an infinite while loop which uses **recv()** system call connected to the **server socket**. The other thread takes input from the client to send it to other clients via the server.
### COMPILATION
* To compile it type the **make** command on the terminal. The executables server and client are created and have to be run individually.
* Server has to be executed before the clients.
Commands :
$ make
$ ./server
$./client
### USER INPUTS
* If a User wants to send a message, has to first type the client socket to send to and then the message in the following line.
* Example :
Available clients : |4 |5
Enter the client to send: 5
Enter the message: hi
Available clients : |4 |5
Enter the client to send: EVERYONE
Enter the message: hi
‘exit' command exits the client terminal
(EVERYONE command sends message to all users connected to that server)
### EXPECTED OUTPUT
* If a clients sends you a message it flashes on the terminal as :
Connected to Server
NEW MESSAGE : 5 says hi
### ERROR HANDLING
* If a user enters a invalid socket number or a string its throws an error.
* Ctrl C doesn’t terminate instantly but clears all the pending threads.
### CITATIONS
* 