Console Based Chat

Description

Tools Used: Microsoft .NET Framework Beta 2, Text Editor.

This is an article on how to create a simple console-based chat application using socket connections. It is a one to one based chat application. After compiling the serversocket1.cs and clientsocket1.cs files start the serversocket1 first. Once the server is started Open a new Dos Prompt and start the client. You can pass messages between the server and the client alternatively. The server and the client application terminates when the client types in bye or BYE.

Source Code

// Source code for serversocket1.cs
// created on 9/21/2001 at 10:59 AM
using System;
using System.Net.Sockets;
using System.IO;

public class ServerSocket1
{
    public static void Main()
    {
        try
        {
            bool status = true;
            string servermessage = "";
            string clientmessage = "";
            TcpListener tcpListener = new TcpListener(8100);
            tcpListener.Start();
            Console.WriteLine("Server Started");
            Socket socketForClient = tcpListener.AcceptSocket();
            Console.WriteLine("Client Connected");
            NetworkStream networkStream = new NetworkStream(socketForClient);
            StreamWriter streamwriter = new StreamWriter(networkStream);
            StreamReader streamreader = new StreamReader(networkStream);
            
            while (status)
            {
                if (socketForClient.Connected)
                {
                    servermessage = streamreader.ReadLine();
                    Console.WriteLine("Client:" + servermessage);
                    
                    if ((servermessage == "bye"))
                    {
                        status = false;
                        streamreader.Close();
                        networkStream.Close();
                        streamwriter.Close();
                        return;
                    }
                    
                    Console.Write("Server:");
                    clientmessage = Console.ReadLine();
                    streamwriter.WriteLine(clientmessage);
                    streamwriter.Flush();
                }
            }
            streamreader.Close();
            networkStream.Close();
            streamwriter.Close();
            socketForClient.Close();
            Console.WriteLine("Exiting");
        }
        catch (Exception e)
        {
            Console.WriteLine(e.ToString());
        }
    }
}

// Source Code Ends

// Source Code for ClientSocket1.cs
// created on 9/21/2001 at 11:54 AM
using System;
using System.Net.Sockets;
using System.IO;

public class ClientSocket1
{
    static void Main(string[] args)
    {
        TcpClient socketForServer;
        bool status = true;

        try
        {
            socketForServer = new TcpClient("localhost", 8100);
            Console.WriteLine("Connected to Server");
        }
        catch
        {
            Console.WriteLine("Failed to Connect to server{0}:999", "localhost");
            return;
        }

        NetworkStream networkStream = socketForServer.GetStream();
        StreamReader streamreader = new StreamReader(networkStream);
        StreamWriter streamwriter = new StreamWriter(networkStream);

        try
        {
            string clientmessage = "";
            string servermessage = "";

            while (status)
            {
                Console.Write("Client:");
                clientmessage = Console.ReadLine();

                if ((clientmessage == "bye") || (clientmessage == "BYE"))
                {
                    status = false;
                    streamwriter.WriteLine("bye");
                    streamwriter.Flush();
                }

                if ((clientmessage != "bye") && (clientmessage != "BYE"))
                {
                    streamwriter.WriteLine(clientmessage);
                    streamwriter.Flush();
                    servermessage = streamreader.ReadLine();
                    Console.WriteLine("Server:" + servermessage);
                }
            }
        }
        catch
        {
            Console.WriteLine("Exception reading from the server");
        }

        streamreader.Close();
        networkStream.Close();
        streamwriter.Close();
    }
}


Similar Articles