catch (Exception ex)
{
mainTextBox1.Text += ex.Message + "\n";
}
}
private void button2_Click(object sender, EventArgs e)//connect 2 ser
{
ConServFitst();
}
public void ConServFitst()
{
address = "127.0.0.2";
port = 9305;
try
{
IPEndPoint ipPoint1 = new IPEndPoint(IPAddress.Parse(address), port);
Socket socket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
// подключаемся к удаленному хосту
socket.Connect(ipPoint1);
string message = "GetPort!" + numb;
byte[] data = Encoding.Unicode.GetBytes(message);
socket.Send(data);
// получаем ответ
data = new byte[256]; // буфер для ответа
StringBuilder strBuilder = new StringBuilder();
int bytes = 0; // количество полученных байт
do
{
bytes = socket.Receive(data, data.Length, 0);
strBuilder.Append(Encoding.Unicode.GetString(data, 0, bytes));
}
while (socket.Available > 0);
port = int.Parse(strBuilder.ToString());
// закрываем сокет
mainTextBox1.Text += "Подключение открылось на порту : " + strBuilder.ToString() + "\n";
socket.Shutdown(SocketShutdown.Both);
socket.Close();
}
catch (Exception ex)
{
mainTextBox1.Text += ex.Message + "\n";
}
}
public void viklServ1()
{
address = "127.0.0.2";
port = 9305;
try
{
IPEndPoint ipPoint1 = new IPEndPoint(IPAddress.Parse(address), port);
Socket socket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
// подключаемся к удаленному хосту
socket.Connect(ipPoint1);
string message = "brkpt!" + numb;
byte[] data = Encoding.Unicode.GetBytes(message);
socket.Send(data);
// получаем ответ
data = new byte[256]; // буфер для ответа
StringBuilder builder = new StringBuilder();
int bytes = 0; // количество полученных байт
do
{
bytes = socket.Receive(data, data.Length, 0);
builder.Append(Encoding.Unicode.GetString(data, 0, bytes));
}
while (socket.Available > 0);
mainTextBox1.Text += "Подключение завершилось на порту : " + builder.ToString() + "\n";
// закрываем сокет
socket.Shutdown(SocketShutdown.Both);
socket.Close();
}
catch (Exception ex)
{
mainTextBox1.Text += ex.Message + "\n";
}
}
private void button3_Click(object sender, EventArgs e)//send 1
{
try
{
Serv2(address, port);
if (uslov.Equals("1байт") || uslov.Equals("1килобайт") || uslov.Equals("1мегабайт") || uslov.Equals("1гигабайт") || lastMSG.Equals(forset)) { } else {
mainTextBox1.Text += forset;
lastMSG = forset;
}
}
catch (Exception ex)
{
mainTextBox1.Text = ex.Message + "\n";
}
}
public void Serv2(string address1, int port1)
{
IPEndPoint ipPoint1 = new IPEndPoint(IPAddress.Parse(address1), port1);
Socket socket1 = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
string message;
byte[] data;
int bytes, siz;
StringBuilder builder = new StringBuilder();
// подключаемся к удаленному хосту
socket1.Connect(ipPoint1);
if (!takeTextBox2.Text.Equals(""))
{
switch (takeTextBox2.Text)
{
case "байт":
siz = 1;
break;
case "килобайт":
siz = 2;
break;
case "мегабайт":
siz = 3;
break;
case "гигабайт":
siz = 4;
break;
case "1байт":
siz = 5;
break;
case "1килобайт":
siz = 6;
break;
case "1мегабайт":
siz = 7;
break;
case "1гигабайт":
siz = 8;
break;
default:
siz = 1;
break;
}
data = Encoding.Unicode.GetBytes(siz +":");
socket1.Send(data);
int counter = 0;
if (siz >= 5) {
forset = "";
data = new byte[3024]; // буфер для ответа
bytes = 0; // количество полученных байт
do
{
bytes = socket1.Receive(data, data.Length, 0);
builder.Append(Encoding.Unicode.GetString(data, 0, bytes));
}
while (socket1.Available > 0);
var dataForMem = builder.ToString().Split('!');
if (dataForMem.Length == 5)
{
mainTextBox1.Text += "Количество свободных байтов файла подкачки: " + dataForMem[0] + ". Объем используемой физической памяти в единицах, переданных клиентом : " + dataForMem[1] + ";" + "\n";
System.Threading.Thread.Sleep(2000);
mainTextBox1.Text += "\n" + "Новое значение - Количество свободных байтов файла подкачки: " + dataForMem[3] + ". Объем используемой физической памяти в единицах, переданных клиентом : " + dataForMem[4] + ";" + "\n";
uslov = takeTextBox2.Text;
}
else {
mainTextBox1.Text += "Значения не изменились";
// mainTextBox1.Text += "Количество свободных байтов файла подкачки: " + dataForMem[0] + ". Объем используемой физической памяти в единицах, переданных клиентом : " + dataForMem[1]+ ";" + "\n";
//uslov = takeTextBox2.Text;
}
}
else {
data = new byte[3024]; // буфер для ответа
bytes = 0; // количество полученных байт
do
{
bytes = socket1.Receive(data, data.Length, 0);
builder.Append(Encoding.Unicode.GetString(data, 0, bytes));
}
while (socket1.Available > 0);
var dataForMem = builder.ToString().Split('!');
//mainTextBox1.Text += "Количество свободных байтов файла подкачки: " + dataForMem[0] + ". Объем используемой физической памяти в единицах, переданных клиентом : " + dataForMem[1]+ ";" + "\n";
forset = "Количество свободных байтов файла подкачки: " + dataForMem[0] + ". Объем используемой физической памяти в единицах, переданных клиентом : " + dataForMem[1] + "; " + "\n" ;
uslov = takeTextBox2.Text;
}
}
// закрываем сокет
socket1.Shutdown(SocketShutdown.Both);
socket1.Close();
}
private void button4_Click(object sender, EventArgs e)//send 2
{
try
{
Serv1(address, port);
}
catch (Exception ex)
{
mainTextBox1.Text = ex.Message + "\n";
}
}
private void Serv1(string address, int port)
{
IPEndPoint ipPoint1 = new IPEndPoint(IPAddress.Parse(address), port);
Socket socket1 = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
string message;
byte[] data;
int bytes;
StringBuilder builder = new StringBuilder();
int h= int.Parse(this.Size.Height.ToString());
int w= int.Parse(this.Size.Width.ToString());
// подключаемся к удаленному хосту
socket1.Connect(ipPoint1);
data = Encoding.Unicode.GetBytes(h +":" +w);
socket1.Send(data);
data = new byte[3024]; // буфер для ответа
bytes = 0; // количество полученных байт
do
{
bytes = socket1.Receive(data, data.Length, 0);
builder.Append(Encoding.Unicode.GetString(data, 0, bytes));
}
while (socket1.Available > 0);
var dataForMem = builder.ToString().Split('!');
mainTextBox1.Text += "Размер клиентской области " + dataForMem[0] + " x "+ dataForMem[1] + "\nНазвание видеоадаптера -" + dataForMem[2] +" "+ DateTime.Now.ToString() + "; " + "\n";
// закрываем сокет
socket1.Shutdown(SocketShutdown.Both);
socket1.Close();
}
private void button5_Click(object sender, EventArgs e)//stop1
{
viklSer2();
}
private void button6_Click(object sender, EventArgs e)//stop2
{
viklServ1();
}
private void Form1_Load(object sender, EventArgs e)
{
if (Process.GetProcessesByName(Process.GetCurrentProcess().ProcessName).Length > 1)
{
Random rnd = new Random();
numb = rnd.Next(0, 100000);
}
}
private void checkBox1_CheckedChanged(object sender, EventArgs e)
{
if (checkBox1.Checked)
{
timer1.Enabled = true;
}
else
{
timer1.Enabled = false;
}
}
private void timer1_Tick(object sender, EventArgs e)
{
try
{
Serv2(address, port);
}
catch (Exception ex)
{
mainTextBox1.Text = ex.Message + "\n";
}
if (!forset.Equals(lastMSG)) {
mainTextBox1.Text += forset;
lastMSG = forset;
}
else
{
mainTextBox1.Text += "Нет изменений\n";
}
//mainTextBox1.Text += "lastMSG "+ lastMSG +" forset "+forset+" uslov "+ uslov ;
}
}
}
using System;
using System;
using System.Text;
using System.Net;
using System.Net.Sockets;
using System.Threading;
using System.Diagnostics;
using System.Collections.Generic;
using System.Runtime.InteropServices;
using System.Security;
namespace Server1
{
class Program
{
static Dictionary<int, int> busyports = new Dictionary<int, int>();
static int port = 9306; // порт для приема входящих запросов
static int maxconnections = 5;
static void Main(string[] args)
{
if (Process.GetProcessesByName(Process.GetCurrentProcess().ProcessName).Length < 2)
{
Thread myThread1 = new Thread(osnova);
myThread1.Start();
for (int i = 0; i < maxconnections; i++)
{
Thread myThread = new Thread(new ParameterizedThreadStart(podkl));
myThread.Start(port + i);
}
}
}
static void osnova()
{
// получаем адреса для запуска сокета
IPEndPoint ipPoint = new IPEndPoint(IPAddress.Parse("127.0.0.1"), 9305);
// создаем сокет
Socket listenSocket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
try
{
// связываем сокет с локальной точкой, по которой будем принимать данные
listenSocket.Bind(ipPoint);
// начинаем прослушивание
listenSocket.Listen(10);
//DateTime.Now.ToShortTimeString()
while (true)
{
Socket handler = listenSocket.Accept();
// получаем сообщение
StringBuilder builder = new StringBuilder();
int bytes = 0; // количество полученных байтов
byte[] data = new byte[256]; // буфер для получаемых данных
do
{
bytes = handler.Receive(data);
builder.Append(Encoding.Unicode.GetString(data, 0, bytes));
}
while (handler.Available > 0);
string message = "";
if (builder.ToString().Split('!')[0].Equals("GetPort"))
{
for (int i = 0; i < maxconnections; i++)
{
if (!busyports.ContainsValue(9306 + i))
{
if (busyports.ContainsKey(int.Parse(builder.ToString().Split('!')[1])))
{
int value = 0;
busyports.TryGetValue(int.Parse(builder.ToString().Split('!')[1]), out value);
message = value.ToString();
data = Encoding.Unicode.GetBytes(message);
handler.Send(data);
handler.Shutdown(SocketShutdown.Both);
handler.Close();
break;
}
busyports.Add(int.Parse(builder.ToString().Split('!')[1]), 9306 + i);
message = (9306 + i).ToString();
data = Encoding.Unicode.GetBytes(message);
handler.Send(data);
handler.Shutdown(SocketShutdown.Both);
handler.Close();
break;
}
}
}
else
{
try
{
int value = 0;
busyports.TryGetValue(int.Parse(builder.ToString().Split('!')[1]), out value);
message = value.ToString();
busyports.Remove(int.Parse(builder.ToString().Split('!')[1]));
data = Encoding.Unicode.GetBytes(message);
handler.Send(data);
handler.Shutdown(SocketShutdown.Both);
handler.Close();
}
catch
{
message = "error";
data = Encoding.Unicode.GetBytes(message);
handler.Send(data);
handler.Shutdown(SocketShutdown.Both);
handler.Close();
}
}
}
}
catch (Exception ex)
{
Console.WriteLine(ex.Message);
}
}
[StructLayout(LayoutKind.Sequential, CharSet = CharSet.Auto)]
public class MemoryStatus
{
[return: MarshalAs(UnmanagedType.Bool)]
[DllImport("kernel32.dll", CharSet = CharSet.Auto, SetLastError = true)]
internal static extern bool GlobalMemoryStatusEx([In, Out] MemoryStatus lpBuffer);
private uint dwLength;
public uint MemoryLoad;
public ulong TotalPhys;
public ulong AvailPhys;
public ulong TotalPageFile;
public ulong AvailPageFile;
public ulong TotalVirtual;
public ulong AvailVirtual;
public ulong AvailExtendedVirtual;
private static volatile MemoryStatus singleton;
private static readonly object syncroot = new object();
public static MemoryStatus CreateInstance()
{
if (singleton == null)
lock (syncroot)
if (singleton == null)
singleton = new MemoryStatus();
return singleton;
}
[SecurityCritical]
private MemoryStatus()
{
dwLength = (uint)Marshal.SizeOf(typeof(MemoryStatus));
GlobalMemoryStatusEx(this);
}
}
static void podkl(object x)
{
int port1 = (int)x;
// получаем адреса для запуска сокета
IPEndPoint ipPoint = new IPEndPoint(IPAddress.Parse("127.0.0.1"), port1);
// создаем сокет
Socket listenSocket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
try
{
// связываем сокет с локальной точкой, по которой будем принимать данные
listenSocket.Bind(ipPoint);
// начинаем прослушивание
listenSocket.Listen(10);
//DateTime.Now.ToShortTimeString()
Console.WriteLine($"Сервер №{port1 - 9305} запущен, находится в ожидании подключений");
while (true)
{
Socket handler = listenSocket.Accept();
// получаем сообщение
StringBuilder builder = new StringBuilder();
int bytes = 0; // количество полученных байтов
byte[] data = new byte[3024]; // буфер для получаемых данных