Code Monkey home page Code Monkey logo

linux-socket-chat's Introduction

Linux Socket Chat

A simple chat application with client-server architecture, written in C++ using linux socket programming and multithreading

Overview

  • One server, multiple clients
  • Clients can connect to the server and either send connection request to other free clients or wait and accept a connection request
  • One mutex mapped to each client
  • While attempting to connect with another client, the connecting client acquires its own mutex and then the other client's to ensure that concurrency issues are handled well while connecting
  • Paired clients release the acquired mutex on disconnecting

Setup and use locally

  1. Clone the repo and change directory
cd linux-socket-chat
  1. Compile the server.cpp and client.cpp files
g++ server.cpp -o server -lpthread
g++ client.cpp -o client -lpthread
  1. Run the server
./server
  1. Run the clients
./client

Commands

Command

Use

menu show list of supported commands
stats show list of clients with their FDs and status { FREE, BUSY }
connect *CLIENT_FD* pair with (connect to) client identified by CLIENT_FD
goodbye unpair with a connected client
close disconnect from server

linux-socket-chat's People

Contributors

rahulpathak-github avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.