Клиент-серверное приложение на сокетах TCP. Умножение матрицы на матрицу - C#
Формулировка задачи:
Здравствуйте!
Нужно создать клиент-серверное приложение, с помощью которого реализуется умножение матрицы на матрицу.
Массивы матриц задаются в клиенте, потом данные передаются серверу, на котором и происходит само вычисление (умножение).
Помогите, пожалуйста, разобраться. Никак не могу понять: как передать массивы с клиента серверу и после получить результат в клиенте.
Решение задачи: «Клиент-серверное приложение на сокетах TCP. Умножение матрицы на матрицу»
textual
Листинг программы
using System;
using System.IO;
using System.Net.Sockets;
namespace ConsoleApplication198
{
class Program
{
static void Main()
{
var matrix1 = new int[3, 3] { { 1, 2, 3 }, { 4, 5, 6 }, { 7, 8, 9 }};
var matrix2 = new int[3, 3] { { 11, 12, 13 }, { 14, 15, 16 }, { 17, 18, 19 } };
var result = new int[3,3];
//создаем сокет
var client = new TcpClient();
//коннектимся к серверу
client.Connect("localhost", 32333);
//отправляем данные
using (var stream = client.GetStream())
using (var bw = new BinaryWriter(stream))
using (var br = new BinaryReader(stream))
{
//отправлем размер матриц
bw.Write(matrix1.GetLength(0));
//отправляем матрицы
SendMatrix(bw, matrix1);
SendMatrix(bw, matrix2);
//принимаем ответ
ReceiveMatrix(br, result);
}
//показываем результат
PrintMatrix(result);
Console.ReadLine();
}
private static void SendMatrix(BinaryWriter bw, int[,] matrix)
{
for (int i = 0; i < matrix.GetLength(0); i++)
for (int j = 0; j < matrix.GetLength(1); j++)
bw.Write(matrix[i, j]);
}
private static void ReceiveMatrix(BinaryReader br, int[,] matrix)
{
for (int i = 0; i < matrix.GetLength(0); i++)
for (int j = 0; j < matrix.GetLength(1); j++)
matrix[i, j] = br.ReadInt32();
}
private static void PrintMatrix(int[,] matrix)
{
for (int i = 0; i < matrix.GetLength(0); i++)
{
for (int j = 0; j < matrix.GetLength(1); j++)
Console.Write("{0}\t", matrix[i, j]);
Console.WriteLine();
}
}
}
}