How to Build a Simple Client-Server Chat Application in Python
How to Build a Simple Client-Server Chat Application in Python Feature Image

How to Build a Simple Client-Server Chat Application in Python

Learn how to build a Python client-server chat app! ???? Discover the essentials of client-server communication and create your own chat application.

Table of Contents

Introduction

The client-server architecture is a commonly used model in many network-based applications. In this model, a client connects to and communicates with a server. The client sends a message to the server, which processes it and then sends a response back to the client. Python’s socket module is a powerful tool for creating such client-server applications. In this blog post, we will show you how to build a basic client-server chat application.

Development

First, let’s examine the Python code that includes the necessary socket functions to establish a connection between the client and server.

## client.py
import socket

host = '127.0.0.1'
port = 50001


client_socket = socket.socket(socket.AF_INET,socket.SOCK_STREAM)
client_socket.connect((host,port))


message = input(">> ")


while message.lower().strip()!="quit":
? ? client_socket.send(message.encode())
? ? data = client_socket.recv(1024).decode()
? ? print("Response from Server : "+str(data))
? ? message = input(">> ")
client_socket.close()? ??          

In this code, the client creates a TCP socket and connects to the server using the specified IP address and port. It then prompts the user to enter a message and sends it to the server. It receives the response from the server, prints it to the console, and continues the loop until the user types “quit” to exit.

Next, let’s examine the server-side code.

## server.py
import socket

host = '127.0.0.1'
port = 50001


server_socket = socket.socket(socket.AF_INET,socket.SOCK_STREAM)
server_socket.bind((host,port))
server_socket.listen()


conn,addr = server_socket.accept()
print("connected from :"+str(addr))


while True:
? ? data = conn.recv(1024).decode()
? ? print(data)
? ? response_data = "Message Received"
? ? conn.send(response_data.encode())
conn.close()? ??          

In this code, the server creates a TCP socket and listens for incoming connections on the specified IP address and port. It accepts the connection from the client, receives the message from the client, prints it to the console, and sends back the “Message Received” response. It continues to wait for new messages.

Conclusion: Using the above code, we can create a basic client-server chat application. The client and server can exchange text-based messages. Now, let’s take a look at how to use the application.

Code Explanation

**client.py**


- We import the socket module with `import socket`.
- The variables `host = '127.0.0.1'` and `port = 50001` specify the IP address and port number to connect to the server.
- We create a new socket object with `client_socket = socket.socket(socket.AF_INET,socket.SOCK_STREAM)`.
- We connect to the server using `client_socket.connect((host,port))`.
- To get input from the user, we use `message = input(">> ")`.
- It enters into a loop and runs until the user enters "quit":
? ? - It sends the entered message to the server by encoding it: `client_socket.send(message.encode())`
? ? - It receives data from the server and prints it: `data = client_socket.recv(1024).decode()`
? ? - It prompts for a new message: `message = input(">> ")`
- It closes the connection: `client_socket.close()`


**server.py**


- Similarly, we first import the socket module (`import socket`).
- Then, we specify which IP address and port number that our server will listen on (`host = '127.0.0.1'`, 	`port = 50001`).
- We create a new socket object with `server_socket = socket.socket(socket.AF_INET,socket.SOCK_STREAM)`.
- We bind to the specified IP address and port number using `server_socket.bind((host,port))`.
- We make our server listen for incoming connections with `server_socket.listen()`.
- When a client connects (`conn,addr = server_socket.accept()`), it prints "connected from :"+str(addr) on screen.??

        

Example Usage

  1. Start the server.py file. The server will start listening on the specified IP address and port.
  2. Next, start the client.py file. The client will connect to the server and prompt you to enter a message.
  3. Type a message and press Enter.
  4. The server will receive the message, print it to the console, and send a “Message Received” response.
  5. The client will receive the response from the server and print it to the console.
  6. You can repeat steps 3-5 to send as many messages as you want.
  7. To exit, type “quit” in the client and press Enter.

In this example, the client and server are configured to run on the same machine (localhost). However, if you want to run them on different machines, you will need to provide different IP addresses for the server and client.

In conclusion, we have built a simple client-server chat application using Python’s socket module. This example can provide a basic understanding of client-server communication and serve as a foundation for developing more complex applications.

GitHub

To learn more about the project and explore its source code, documentation, and additional resources, I highly recommend visiting the GitHub repository at

GitHub

I hope this blog post provides you with essential insights into Python’s socket library and explains its use cases comprehensively. Happy coding!

I invite you to join me on this exciting adventure as we dive deeper into the realm of cybersecurity with Python. Stay tuned for the upcoming blog posts where we’ll explore advanced topics and discover new ways to leverage Python for cybersecurity applications.

Thank you for your continued support, and I’m excited to have you on this enriching journey!

Sincerely, Founder of orioninsist

Follow the white rabbit

Thank you for your support!

Hello friends! I want to express my gratitude for your support. Your interest and encouragement mean a lot to me. To keep our connection strong and to provide you with more valuable content, I encourage you to stay connected with me on my social media platforms.

I am excited to share more content with you through these platforms and I value your engagement and feedback. Thank you once again for your support. Let’s stay connected and keep the conversation going!

Your feedback and engagement mean the world to me. Thank you once again for your unwavering support.

Let’s continue to “follow the white rabbit” and discover new horizons together!

Best regards,

Murat Kurkoglu\

Founder of?orioninsist

Google Survey Forms

Stay connected with me

???Patreon????Buymeacoffee????Instagram????Twitter????Facebook????Pinterest????Website????GitHub????YouTube????Medium????LinkedIn????LinkedIn

要查看或添加评论,请登录

Murat Kurkoglu的更多文章

  • Docker Cli Essential Commands

    Docker Cli Essential Commands

    Explore Docker CLI with essential commands for listing, running, inspecting, and managing containers. Table of Contents…

  • Embarking on the Journey of Containers With Docker Essential Commands

    Embarking on the Journey of Containers With Docker Essential Commands

    Unleash the power of Docker! This guide equips you with the fundamental commands to manage and navigate the world of…

  • Exploring Docker Commands and Container Management

    Exploring Docker Commands and Container Management

    Explore Docker commands and container management with this comprehensive guide. Learn how to update container images…

  • Docker a Comprehensive Guide to the Basic Commands

    Docker a Comprehensive Guide to the Basic Commands

    Learn the basics of Docker with this comprehensive guide to the most important commands. Table of Contents What is…

  • How to Install Docker Desktop on Debian

    How to Install Docker Desktop on Debian

    Table of Contents Step 1: Adding Docker’s Official GPG Key Step 2: Adding the Docker Repository Step 3: Updating…

    1 条评论
  • Understanding Docker Containers

    Understanding Docker Containers

    Docker containers: Learn core concepts, benefits, and use cases in this detailed exploration. Streamline your software…

  • What Is Docker

    What Is Docker

    Docker simplifying devOps with portable containers Table of Contents Introduction Key Concepts Benefits of Docker…

  • Essential Linux Terminal Commands and Examples

    Essential Linux Terminal Commands and Examples

    Master essential Linux terminal commands with explanations and practical examples. Learn how to navigate, copy, delete…

  • Self Discovery and Goal Setting

    Self Discovery and Goal Setting

    Embark on an Exciting Journey of Self-Discovery and Goal Setting! ??? Uncover your potential, define your aspirations…

  • Mastering Data Analysis With Pandas Series Ultimate Guide

    Mastering Data Analysis With Pandas Series Ultimate Guide

    Table of Contents YouTube GitHub Medium Thank you Hello, data enthusiasts! ?? Welcome to our mind-blowing journey into…