views:

319

answers:

3

how can i send message back to the browser or localhost for example if i want to display message called.... This is test in browser.

using System;
using System.IO;
using System.Net;
using System.Net.Sockets;
using System.Text;

class MyTcpListener
{
    public static void Main()
    {


     try
     {

        // Set the TcpListener on port 13000.
            Int32 port = 80;
            IPAddress localAddr = IPAddress.Parse("127.0.0.1");

            // TcpListener server = new TcpListener(port);
            TcpListener server = new TcpListener(localAddr, port);

            // Start listening for client requests.
            server.Start();

            // Buffer for reading data
            Byte[] bytes = new Byte[256];
            String data = null;

            // Enter the listening loop.
            while (true)
            {
                Console.Write("Waiting for a connection... ");

                // Perform a blocking call to accept requests.
                // You could also user server.AcceptSocket() here.
                TcpClient client = server.AcceptTcpClient();
                Console.WriteLine("Connected!");

                data = null;

                // Get a stream object for reading and writing
                NetworkStream stream = client.GetStream();

                int i;

                // Loop to receive all the data sent by the client.
                while ((i = stream.Read(bytes, 0, bytes.Length)) != 0)
                {
                    // Translate data bytes to a ASCII string.
                    data = System.Text.Encoding.ASCII.GetString(bytes, 0, i);
                    Console.WriteLine(String.Format("Received: {0}", data));

                    // Process the data sent by the client.
                    data = data.ToUpper();

                    byte[] msg = System.Text.Encoding.ASCII.GetBytes(data);

                    // Send back a response.
                    stream.Write(msg, 0, msg.Length);
                    Console.WriteLine("Sending message..");

                 }

                // Shutdown and end connection
                client.Close();
            }
        }
        catch (SocketException e)
        {
            Console.WriteLine("SocketException: {0}", e);
        }

        Console.WriteLine("\nHit enter to continue...");
        Console.Read();
    }
}
A: 

This seems to be a console application rather than a website, so the output generated in the Console.WriteLine statements will be going to the debug console if you run it in visual studio, or they should show on screen if you run it as a compiled application from the command prompt.

What sort of project is this a part of?

Glenn Slaven
yes this is console application to know how it works rather than any project. i wwant to do something and i am learning .net programming in order to achieve those goals.. its not yet any part of project. and you are right its console application not website. and i want to send something back to browser. so that i could know how it really works.
tike
+1  A: 
using(StreamWriter sw = new StreamWriter(stream))
{
    sw.Write("<html><body>Hello There!</body></html>");
}

This should write the HTML into the output stream. Make sure to close the stream after this. And also close the TcpClient.

feroze
cheers mate thats what i wanted to know.
tike
A: 

Instead of reading until you retrieve 0 bytes, you should read until you find a blank line. Calling Read() on the last bit of the open network connection just blocks until the browser sends more data (which it won't because it's sent everything and is waiting on you).

class MyTcpListener
{
    public static void Main()
    {


        try
        {

            // Set the TcpListener on port 13000.
            Int32 port = 80;
            IPAddress localAddr = IPAddress.Parse("127.0.0.1");

            // TcpListener server = new TcpListener(port);
            TcpListener server = new TcpListener(localAddr, port);

            // Start listening for client requests.
            server.Start();

            // Enter the listening loop.
            while (true)
            {
                Console.Write("Waiting for a connection... ");

                // Perform a blocking call to accept requests.
                // You could also user server.AcceptSocket() here.
                TcpClient client = server.AcceptTcpClient();
                Console.WriteLine("Connected!");


                // Get a stream object for reading and writing
                using(NetworkStream stream = client.GetStream())
                using (StreamReader sr = new StreamReader(stream))
                {
                    List<byte> msg = new List<byte>();
                    // Loop to receive all the data sent by the client.
                    string data;
                    while ((data = sr.ReadLine()) != "")
                    {
                        Console.WriteLine(String.Format("Received: {0}", data));

                        // Process the data sent by the client.
                        data = data.ToUpper();

                        msg.AddRange(System.Text.Encoding.ASCII.GetBytes(data));

                    }

                    // Send back a response.
                    stream.Write(msg.ToArray(), 0, msg.Count);
                    Console.WriteLine("Sending message..");
                }
                client.Close();
            }
        }
        catch (SocketException e)
        {
            Console.WriteLine("SocketException: {0}", e);
        }

        Console.WriteLine("\nHit enter to continue...");
        Console.Read();
    }
}
statenjason