Using HttpWebRequest to send HTML to a Browser
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("Sendi开发者_开发百科ng message..");
}
// Shutdown and end connection
client.Close();
}
}
catch (SocketException e)
{
Console.WriteLine("SocketException: {0}", e);
}
Console.WriteLine("\nHit enter to continue...");
Console.Read();
}
}
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.
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();
}
}
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?
精彩评论