class Program
{
static void Main(string[] args)
{
const string srv1 = "192.168.9.99";
const int port = 5007;
var si1 = new SeverInst(IPAddress.Parse(srv1), port);
si1.Start();
while (true)
{
si1.WaitAndStart();
}
}
}
public class ClientObject
{
public TcpClient Client;
public ClientObject(TcpClient tcpClient)
{
Client = tcpClient;
}
public void Process()
{
NetworkStream stream = null;
try
{
stream = Client.GetStream();
byte[] data = new byte[64]; // буфер для получаемых данных
while (true)
{
// получаем сообщение
var builder = new StringBuilder();
int bytes = 0;
do
{
bytes = stream.Read(data, 0, data.Length);
builder.Append(Encoding.Unicode.GetString(data, 0, bytes));
}
while (stream.DataAvailable);
string message = builder.ToString();
Console.WriteLine(message);
// отправляем обратно сообщение в верхнем регистре
message = message.Substring(message.IndexOf(':') + 1).Trim().ToUpper();
data = Encoding.Unicode.GetBytes(message);
stream.Write(data, 0, data.Length);
}
}
catch (Exception ex)
{
Console.WriteLine(ex.Message);
}
finally
{
if (stream != null)
stream.Close();
if (Client != null)
Client.Close();
}
}
}
public class SeverInst
{
public TcpListener Listener { get; }
public SeverInst(IPAddress ip, int port )
{
Listener = new TcpListener(ip, port);
}
public void Start() => Listener.Start();
public void WaitAndStart()
{
var client = Listener.AcceptTcpClient();
var clientObject = new ClientObject(client);
// создаем новый поток для обслуживания нового клиента
var clientThread = new Thread(new ThreadStart(clientObject.Process));
clientThread.Start();
}
}