using System.Windows.Forms;
using System.Net.Sockets;
using System.IO;
namespace server
{
public partial class Form2 : Form
{
public Form2()
{
InitializeComponent();
}
TcpListener serverSocket;
TcpClient clientSocket;
private void Form2_Load(object sender, EventArgs e)
{
serverSocket = new TcpListener(65000);//порт
clientSocket = default(TcpClient);
serverSocket.Start();//слушает порт
clientSocket = serverSocket.AcceptTcpClient();//принимает запрос на подключение
//прием данных с клиента
byte[] bytesFrom = new byte[1024];//массив байтов
NetworkStream networkStream = clientSocket.GetStream();//объект для создания потока
BinaryReader binRead = new BinaryReader(networkStream); //объект для считывания потока с сервера
string dataFromClient = binRead.ReadString();// запись в строку данных с клиента
networkStream.Flush();//удаляет данные с потока
//посылает информацию клиенту
Matrix matrix = new Matrix();
matrix.ReadFromString(dataFromClient);//формируем интовую матрицу
label1.Text += "\n";
for (int k = 0; k < matrix.length; k++)
{
for (int j = 0; j < matrix.length; j++)
{
label1.Text += String.Format("{0,4:f2} ", matrix[k, j]);
}
label1.Text += "\n";
}
matrix.AntiMat();
string ForClient = "\n";
for (int k = 0; k < matrix.length; k++)
{
for (int j = matrix.length; j < matrix.length * 2; j++)
{
ForClient += String.Format("{0,4:f2} ", matrix[k, j]);
}
ForClient += "\n";
}
new BinaryWriter(networkStream).Write(ForClient);//посылаем результат клиенту
}
}
}
namespace server
{
class Matrix
{
private double[,] matrix;
public int length;
public double this[int i, int j]
{
get { return matrix[i, j]; }
set { matrix[i, j] = value; }
}
public int Count
{
get { return matrix.GetLength(0); }
}
public void CreateMatrix(int length)
{
matrix = new double[length, length*2];
}
public void ReadFromString(string data)
{
string[] rows = data.Split(';');
CreateMatrix(rows.Length - 1);
length = rows.Length - 1;
int ii = 0, jj = 0;
for (int i = 0; i < rows.Length; i++)
{
if (rows[i] != "")
{
string[] elem = rows[i].Split(' ');
jj = 0;
for (int j = 0; j < elem.Length; j++)
{
if (elem[j] != "")
{
matrix[ii, jj] = Convert.ToDouble(elem[j]);
jj++;
}
}
ii++;
}
}
}
public void AntiMat()
{
int k = length;
for (int i = 0; i < length; i++, k++)
{
matrix[i, k] = 1;
}
for (int l = 0; l < length - 1; l++)
{
for (int i = l + 1; i < length; i++)
{
double t = matrix[i, l] / matrix[l, l];
for (int j = l; j < length * 2; j++)
{
matrix[i, j] = matrix[i, j] - matrix[l, j] * t;
}
}
}
//второе преобразование
for (int l = length - 1; l > 0; l--)
{
for (int i = l - 1; i >= 0; i--)
{
double t = matrix[i, l] / matrix[l, l];
for (int j = l; j < length * 2; j++)
{
matrix[i, j] = matrix[i, j] - matrix[l, j] * t;
}
}
}
//финальное преобразование
k = 0;
for (int i = 0; i < length; i++)
{
double z = 1.0 / matrix[i, k];
for (int j = 0; j < length * 2; j++)
{
matrix[i, j] = matrix[i, j] * z;
}
k++;
}
}
public int Check(double[,] x, int n)
{
int d = 0;
for (int i = 0; i < n && d == 0; i++)
{
int count = 0;
for (int k = 0; k < n; k++)
if (x[i, k] == 0) count++;
if (count == n)
{
d = 1;
if (x[i, n] == 0) d = 2;
}
}
return d;
}
public int Rang()
{
int k = 0, i = 0;
double t = 0;
int n = Count;
for (k = 0; k < n - 1; k++)
for (int j = k + 1; j < n; j++)
{
t = matrix[j, k] / matrix[k, k];
for (i = 0; i < n; i++)
{
matrix[j, i] = matrix[k, i] * t - matrix[j, i];
}
}
int q = 0, h = 0, z = 0;
int s = 0;
for (s = 0; s < n; s++)
{
h = 0;
for (q = 0; q < n; q++)
{
if (matrix[s, q] != 0)
{
h++;
}
}
if (h > 0)
z++;
}
return z;
}
}
}
Скриншоты
Рисунок 1 – Пример работы программы
Рисунок 2 – Пример работы программы
Рисунок 3 – Пример работы программы
Выводы: Были получены навыки работы с Сокетами. Изучены методы передач данных между компьютерами по протоколу TCP/IP. Улучшены знания в области компьютерных сетей
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.