Стек протоколов TCP/IP. Передача данных по сети средствами стека протоколов TCP/IP. Основные принципы передачи данных по сети средствами стека протоколов TCP/IP, страница 2

clientSocket = new TcpClient();

clientSocket.Connect(textBox2.Text, 65000);

После подключения к серверу, данные передаются на сервер с помощью данного фрагмента кода.

NetworkStream networkStream = clientSocket.GetStream();

matrix = new Matrix(); //создаем матрицу

matrix.ReadFromForm(dataGridView1);//cчитываем данные из таблицы на форме

string data = matrix.ConvertToString();//конвертируем матрицу в строку

BinaryWriter binWr = new BinaryWriter(networkStream);

binWr.Write(data);//посылает поток networkStream на сервер

После отправки данных на сервер, клиент ожидает получения результатов.

BinaryReader binRead = new BinaryReader(networkStream);

string receivedData = binRead.ReadString(); //cчитываем данные с сервера

label1.Text = "Ранг: " + receivedData;//записываем ранг в label1

Алгоритм нахождения обратной матрицы методом гаусса

Основной смысл: В одну матрицу записывают матрицу А и единичную матрицу Е т.е. составляют расширенную матрицу (А|E). После этого с помощью элементарных преобразований добиваются того, чтобы матрица слева от черты станет единичной, тогда расширенная матрица примет вид (Е|А-1).

Алгоритм, использованный в данной программе, проводит преобразование в три этапа.

-  Переход к верхнетреугольной матрице.

-  Переход к диагональной матрице.

-  Переход к единичной матрице.

Пример:

# - некоторое числовое значение.

Исходная матрица

Матрица после первого преобразования

Матрица после второго преобразования

Матрица после третьего преобразования

Листинг программы клиента

using System;

using System.Collections.Generic;

using System.ComponentModel;

using System.Data;

using System.Drawing;

using System.Linq;

using System.Text;

using System.Threading.Tasks;

using System.Windows.Forms;

using System.Net;

using System.Net.Sockets;

using System.IO;

namespace klient

{

public partial class Form1 : Form

{

public Form1()

{

InitializeComponent();

}

TcpClient clientSocket; //объект для передачи данных

Matrix matrix;

private void Form1_Load(object sender, EventArgs e) { }

private void button1_Click(object sender, EventArgs e)

{

clientSocket = new TcpClient();

clientSocket.Connect(textBox2.Text, 65000);//соединяется с 65000ым портом

NetworkStream networkStream = clientSocket.GetStream();// объект для cоздания потока

matrix = new Matrix(); //создаем матрицу

matrix.ReadFromForm(dataGridView1);//cчитываем данные из таблицы на форме

string data = matrix.ConvertToString();//конвертируем матрицу в строку

BinaryWriter binWr = new BinaryWriter(networkStream); //объект для записи потока

binWr.Write(data);//посылает поток networkStream на сервер

//receive

BinaryReader binRead = new BinaryReader(networkStream); //объект для чтения потока

string receivedData = binRead.ReadString(); //cчитываем данные с сервера

label1.Text = "Ранг: " + receivedData;//записываем ранг в label1

}

private void button2_Click(object sender, EventArgs e)

{

int count = Convert.ToInt32(textBox1.Text);

dataGridView1.RowHeadersVisible = false;

dataGridView1.ColumnCount = count;

dataGridView1.RowCount = count;

for (int i = 0; i < count; i++)

{

dataGridView1.Columns[i].Width = 20;

}

}

}

}

namespace klient

{

class Matrix

{

private double[,] matrix;

public double this[int i, int j]

{

get { return matrix[i, j]; }

set { matrix[i, j] = value; }

}

public void ReadFromForm(DataGridView grid)

{

matrix = new double[grid.RowCount, grid.ColumnCount];

int i, j;

for (i = 0; i < matrix.GetLength(0); i++)

for (j = 0; j < matrix.GetLength(1); j++)

{

matrix[i, j] = Convert.ToInt32(grid[j, i].Value);

}

}

public string ConvertToString()

{

string data = "";

int i, j;

for (i = 0; i < matrix.GetLength(0); i++)

{

data += ";";

for (j = 0; j < matrix.GetLength(1); j++)

{

data += matrix[i, j].ToString() + " ";

}

}

return data;

}

}

}

Листингпрограммысервера

using System;

using System.Collections.Generic;

using System.ComponentModel;

using System.Data;

using System.Drawing;

using System.Linq;

using System.Text;

using System.Threading.Tasks;