rendered paste bodyusing System;
using System.Collections.Generic;
using System.Text;
using System.Net;
using System.Net.Sockets;
using System.Threading;
namespace Server
{
class Server
{
private TcpListener listener;
private ManualResetEvent reset;
public delegate void MessageReceived(string msg);
public event MessageReceived OnMessageReceived;
public delegate void ClientConnected(TcpClient client);
public event ClientConnected OnClientConnected;
public Server(int port)
{
this.listener = new TcpListener(new IPEndPoint(IPAddress.Loopback, port));
this.reset = new ManualResetEvent(false);
}
public void Start()
{
this.listener.Start();
this.reset.Reset();
this.listener.BeginAcceptTcpClient(new AsyncCallback(acceptTcpClient), this.listener);
this.reset.WaitOne();
}
private void acceptTcpClient(IAsyncResult asyn)
{
TcpClient client = this.listener.EndAcceptTcpClient(asyn);
this.OnClientConnected.Invoke(client);
this.reset.Set();
byte[] recvBuffer = new byte[1024];
client.Client.BeginReceive(recvBuffer, 0, 0, SocketFlags.None,
new AsyncCallback(beginReceive), client);
this.OnMessageReceived.Invoke(Encoding.ASCII.GetString(recvBuffer));
}
private void beginReceive(IAsyncResult asyn)
{
TcpClient client = (TcpClient)asyn.AsyncState;
int bytes = client.Client.EndReceive(asyn);
}
}
}