This article demonstrates — How to set up a simple Chat Room server and allow multiple clients to connect to it using a client-side script.
The code uses the concept of sockets and threading. Socket programming Sockets can be thought of as endpoints in a communication channel that is bi-directional, and establishes communication between a server and one or more clients. Here, we set up a socket on each end and allow a client to interact with other clients via the server. The socket on the server side associates itself with some hardware port on the server side.
Any client that has a socket associated with the same port can communicate with the server socket. Multi-Threading A thread is sub process that runs a set of commands individually of any other thread.
So, every time a user connects to the server, a separate thread is created for that user and communication from server to simple chat rooms takes place along individual thre based on socket objects created for the sake of identity of each client. We will require two scripts to establish this chat room. One to keep the serving running, and another that every client should run in order to connect to the server.
Server Side Script The server side script will attempt to establish a socket and bind it to an IP address and port specified by the user windows users might have to make an exception for the specified port in their firewall settings, or can rather use a port that is already open. The script will then stay open and receive connection requests, and will append respective socket objects to a list to keep track of active connections. Every time a user connects, a separate thread will be created for that user.
In each thread, the server awaits a message, and sends that message to other users currently on the chat. If the server encounters an error while trying to receive a message from a particular thread, it will exit that thread.
Web chat communication made simple
For example, if a local area network has a set of private IP addresses ased ranging from Care must be taken to choose a port that is currently not in usage. For example, port 22 is default for ssh, and port 80 is default for HTTP protocols.
So these two ports preferably, shouldnt be used or reconfigured to make them free for usage. However, if the server is meant to be accessible beyond a local network, the public IP address would be required for usage.
A simple web chat
This would require port forwarding in cases where a node from a local network node that isnt the router wishes to host the server. In this case, we would require any requests that come to the public IP addresses to be re routed towards our private IP address in our local network, and would hence require port forwarding. For more reading on port forwarding: link To run the script, simply download it from the GitHub link specified at the bottom of the post, and save it at a convenient location on your computer.
Python program to implement server side of chat room. This is used when we have an Internet Domain with any two hosts The second argument is the type of socket.
The client must be aware of these parameters """ server. This can be increased as per convenience. Once it connects, it will continuously check as to whether the input comes from the server or from the client, and accordingly redirects output. If the input is from the server, it displays the message on the terminal. If the input is from the user, it sends the message that the users enters to the server for it to be broadcasted to other users.
Related Articles. This is used when we have an Internet Domain with. The client must be aware of these parameters. This can be.
Calls broadcast function to send message to all. Python program to implement client side of chat room. Either the. So for example, if the server wants. If the user wants to send a message, the else. Next Socket Programming in Python. Recommended Articles. Article Contributed By :.
Easy Normal Medium Hard Expert. Most popular in Computer Networks.
Most visited in Project. Writing code in comment? Please use ide. Load Comments.