using System;␍␊ |
using System.Collections.Generic;␍␊ |
using System.Linq;␍␊ |
using System.Text;␍␊ |
using System.Threading.Tasks;␍␊ |
using System.Net;␍␊ |
using System.Net.Sockets;␍␊ |
using System.Threading;␍␊ |
␍␊ |
namespace PongExample1␍␊ |
{␍␊ |
public static class ByteExtension␍␊ |
{␍␊ |
public static string GetString(this byte[] arr, int k)␍␊ |
{␍␊ |
return Encoding.ASCII.GetString(arr, 0, k);␍␊ |
}␍␊ |
}␍␊ |
public static class StringExtension␍␊ |
{␍␊ |
public static byte[] ToByteArray(this string str)␍␊ |
{␍␊ |
return Encoding.ASCII.GetBytes(str);␍␊ |
}␍␊ |
}␍␊ |
class Server␍␊ |
{␍␊ |
TcpListener server;␍␊ |
Socket s;␍␊ |
int count = 0;␍␊ |
public Server(IPAddress ip, int port = 5000)␍␊ |
{␍␊ |
server = new TcpListener(ip, port);␍␊ |
server.Start();␍␊ |
Console.WriteLine("Listening on {0} on port {1}", ip.ToString(), port);␍␊ |
␍␊ |
while (true)␍␊ |
{␍␊ |
s = server.AcceptSocket();␍␊ |
Thread t = new Thread(Respond);␍␊ |
t.Start(s);␍␊ |
}␍␊ |
}␍␊ |
␍␊ |
public Server(int port = 5000) : this(IPAddress.Loopback, port) { }␍␊ |
public Server() : this(IPAddress.Loopback, 5000) { }␍␊ |
␍␊ |
public void Respond(object socket)␍␊ |
{␍␊ |
Socket s = (Socket)socket;␍␊ |
Console.WriteLine("Accepted connection from {0}", s.RemoteEndPoint);␍␊ |
while (true)␍␊ |
{␍␊ |
byte[] buffer = new byte[1024];␍␊ |
byte[] pong = "pong".ToByteArray();␍␊ |
␍␊ |
int k = s.Receive(buffer);␍␊ |
Console.WriteLine("Client sent - {0} - {1}", buffer.GetString(k), count);␍␊ |
Thread.Sleep(2000);␍␊ |
s.Send(pong);␍␊ |
Console.WriteLine("Sent to client - {0} - {1}", pong.GetString(pong.Length), count);␍␊ |
count++;␍␊ |
}␍␊ |
␍␊ |
}␍␊ |
}␍␊ |
class Program␍␊ |
{␍␊ |
static void Main(string[] args)␍␊ |
{␍␊ |
Server s = new Server();␍␊ |
}␍␊ |
}␍␊ |
}␍␊ |