using System;
using System.Collections.Generic;
using System.Text;
using System.Net;
using System.Net.Sockets;
using System.IO;
namespace TcpServer
{
class ServerClass
{
static void Main(string[] args)
{
IPAddress IP = IPAddress.Parse("127.0.0.1");
// Local address to listen.
TcpListener Listener = new TcpListener(IP, 1986);
// Listening from TCP clients.
Listener.Start(); // Starts listening for incoming requests.
Console.WriteLine("Server is up at port 1986");
Console.WriteLine("Waiting for the connection...");
ClientClass user = new ClientClass(Listener.AcceptTcpClient());
string Message = Console.ReadLine();
user.SendMessage(Message);
}
}
class ClientClass
{
TcpClient Client;
byte[] Data;
bool Flag = true;
NetworkStream netStream;
// When a client comes in.
public ClientClass(TcpClient newClient)
{
Client = newClient;
Console.WriteLine("Connected with " + Client.Client.RemoteEndPoint);
// To notify the client about his connection.
SendMessage("Connected.");
// For receiving the data.
Data = new byte[100];
netStream = Client.GetStream();
netStream.BeginRead(Data, 0, 100, ReceiveMessage, null);
}
// Read from clients.
public void ReceiveMessage(IAsyncResult ar)
{
int bufferLength;
try
{
bufferLength = Client.GetStream().EndRead(ar);
// Receive the message from client side.
string messageReceived = Encoding.ASCII.GetString(Data, 0,
bufferLength);
// Display it on server's console.
Console.WriteLine(Client.Client.RemoteEndPoint.ToString() + "-> "
+ messageReceived);
// Continue reading from client.
Client.GetStream().BeginRead(Data, 0, 100, ReceiveMessage, null);
}
catch(Exception ex)
{
Console.WriteLine(Client.Client.RemoteEndPoint.ToString() + "
is disconnected.");
}
}
// Send the message.
public void SendMessage(string message)
{
try
{
byte[] bytesToSend = System.Text.Encoding.ASCII.GetBytes(message);
Client.Client.Send(bytesToSend);
}
catch (Exception ex)
{
Console.WriteLine(ex);
}
}
}
}
http://www.csharpfriends.com/Articles/getArticle.aspx?articleID=69