int main(int argc, char** argv) { receivingBuffer = sendingBuffer = new char[512]; matrix firstMatrix, secondMatrix; TcpServer server; if (!server.bind (atoi(argv[1]))){ return 0; } if (!server.listenAndAccept()){ return 0; } sendMenu(server); server.receive (receivingBuffer, textLength); int operationOption = atoi (receivingBuffer); if ((operationOption != 1) && (operationOption != 2) && (operationOption != 3) && (operationOption != 4)){ sprintf (sendingBuffer, "Invalid Option.\n"); server.send (sendingBuffer); return 0; } matrix result; if (operationOption != 4){ sprintf (sendingBuffer, "\nFirst Matrix:\n"); server.send (sendingBuffer); readMatrixFromClient (server, firstMatrix); sprintf (sendingBuffer, "\nFirst Matrix:\n"); server.send (sendingBuffer); printMatrixToBuffer (firstMatrix); server.send (sendingBuffer); sprintf (sendingBuffer, "\nSecond Matrix:\n"); server.send (sendingBuffer); readMatrixFromClient (server, secondMatrix); sprintf (sendingBuffer, "\nSecond Matrix:\n"); server.send (sendingBuffer); printMatrixToBuffer (secondMatrix); server.send (sendingBuffer); switch (operationOption){ case 1: if ((firstMatrix.size() != secondMatrix.size()) || (firstMatrix[0].size() != secondMatrix[0].size())){ sprintf (sendingBuffer, "Dimensions don't match. Operation canceled.\n"); server.send (sendingBuffer); return 0; } result = addition (firstMatrix, secondMatrix); break; case 2: if ((firstMatrix.size() != secondMatrix.size()) || (firstMatrix[0].size() != secondMatrix[0].size())){ sprintf (sendingBuffer, "Dimensions don't match. Operation canceled.\n"); server.send (sendingBuffer); return 0; } result = subtraction (firstMatrix, secondMatrix); break; case 3: if (firstMatrix[0].size() != secondMatrix.size()){ sprintf (sendingBuffer, "Dimensions don't match. Operation canceled.\n"); server.send (sendingBuffer); return 0; } result = multiplation (firstMatrix, secondMatrix); break; } } else { sprintf (sendingBuffer, "\nMatrix:\n"); server.send (sendingBuffer); readMatrixFromClient (server, firstMatrix); sprintf (sendingBuffer, "\nMatrix:\n"); server.send (sendingBuffer); printMatrixToBuffer (firstMatrix); server.send (sendingBuffer); result = transpose (firstMatrix); } sprintf (sendingBuffer, "\nResulting Matrix:\n"); server.send (sendingBuffer); printMatrixToBuffer (result); server.send (sendingBuffer); delete[] sendingBuffer; }