All pastes #885341 Raw Edit

Latheesan

public text v1 · immutable
#885341 ·published 2008-01-30 21:34 UTC
rendered paste body
using System;
using System.Net;
using System.Net.Sockets;
using System.Threading;
using System.IO;
using System.Collections.Generic;
using System.Text;

namespace TCP_Server
{
    public class Server
    {
        // Initiate Thread Variable
        public Thread TCP_Thread;

        // Start a threaded tcp server
        public void Threaded_Server()
        {
            try
            {
                // Start the TCP Listener Thread
                TCP_Thread = new Thread(new ThreadStart(TCP_Server));
                TCP_Thread.Start();
            }
            catch (Exception e)
            {
                // Error
                Console.WriteLine("A TCP exception error has occured : "+ e.ToString());
                TCP_Thread.Abort();
            }

        }

        // The program's main entry point
        static void Main(string[] args)
        {
            Server TCP_Server = new Server();
        }

        // Method that is called to do a request on the server
        static void doRequest(NetworkStream socketStream)
        {
            // Initiate Variables
            string receivedData;
            string separater = "#";
            int separaterFound;
            string[] splitData;
            string selectQuery;
            string updateQuery;

            // Create Stream Reader & Wrtiter
            StreamReader sr = new StreamReader(socketStream);
            StreamWriter sw = new StreamWriter(socketStream);

            // Get data from connected client
            receivedData = sr.ReadLine();

            // Process received data
            separaterFound = receivedData.IndexOf(separater);
            if (separaterFound >= 1)
            {
                // Workout the Select and Update Query
                splitData = receivedData.Split(new Char[] { char.Parse(separater) });
                selectQuery = splitData[0].ToString();
                updateQuery = splitData[1].ToString();

                // Send data to client
                sw.WriteLine("Select Query : " + selectQuery);
                sw.WriteLine("Update Query : " + updateQuery);
            }
            else
            {
                // Wrokout the Select Query
                selectQuery = receivedData;

                // Send data to client
                sw.WriteLine("Select Query : " + selectQuery);
            }

            // Flush data to client
            sw.Flush();
        }

        // Method that is called by threadding method to create a TCP Server Listener
        public void TCP_Server()
        {
            // Initiate Variables
            TcpListener listener;
            Socket connection;
            NetworkStream socketStream;
            string localIP = "127.0.0.1";
            int localPort = 43;

            // Try to start server
            try
            {
                // Start Server
                listener = new TcpListener(IPAddress.Parse(localIP), localPort);
                listener.Start();

                // Output to server window
                Console.WriteLine("Server Successfully Started");
                Console.WriteLine("Operating under local end point (ip:port) " + listener.LocalEndpoint);
                Console.WriteLine();
                Console.WriteLine("Waiting for a connection ...");
                Console.WriteLine();

                while (true)
                {
                    connection = listener.AcceptSocket();
                    DateTime CurrTime = DateTime.Now;
                    Console.WriteLine("Connection accepted from " + connection.RemoteEndPoint + " on {0:F}", CurrTime);
                    socketStream = new NetworkStream(connection);

                    // Do a request
                    doRequest(socketStream);

                    socketStream.Close();
                    connection.Close();
                }
            }
            catch (Exception e)
            {
                // Error
                Console.WriteLine("Could Not Start Server : " + e.ToString());
            }
        }
    }
}