Cộng, nhân ma trận theo kiểu Client – Server

java logo

Có ai biết về lập trình Java giúp mình bài này với.

Client gửi 2 ma trận và phương thức tính toán cho Server. Server sau khi tính toán trả lại kết quả cho Client tùy theo phép tính.

Client:

/**
*
* @author Sky
*/

import java.io.DataInputStream;
import java.io.DataOutputStream;
import java.net.ServerSocket;
import java.net.Socket;
import java.util.Scanner;

public class Client{
static int x, y, z, x1, y1;
static int temp = 2;
static int [][] a = new int [10][10];
static int [][] b = new int [10][10];
static int [][] c = new int [10][10];

static Scanner in = new Scanner(System.in);

static void nhapMT(){
System.out.println (“Nhap so hang: “);
x = in.nextInt();
System.out.println (“Nhap so cot: “);
y = in.nextInt();

for (int i = 0; i<x; i++){
for (int j = 0; j<y; j++){
//a[i][j] = 2;
System.out.print(“Nhap MAT[“+(i+1)+”][“+(j+1)+”] : “);
a[i][j] = in.nextInt();
}
}
}//End of nhapMT

public static void GanMaTran(int m[][], int n[][]){
for (int i = 0; i<x; i++)
for (int j = 0; j<y; j++){
n[i][j] = m[i][j];
}
}

public static void xuat(int t[][]){
for (int i = 0; i<x; i++){
for (int j = 0; j<y; j++){
System.out.print (t[i][j] + ” “);
}
System.out.println ();
}
}

public static void main(String []args)
{
System.out.println (“Ma tran thu nhat: “);
nhapMT();
GanMaTran(a,b);

x1 = x;
y1 = y;

System.out.println (“Ma tran thu hai: “);
nhapMT();
GanMaTran(a,c);
System.out.println (“Nhap phep tinh: “);
z = in.nextInt();
try
{
Socket client=new Socket(“localhost”, 8080);

/*** Gui cho Server ***/
DataOutputStream dos=new DataOutputStream(client.getOutputStream());

StringBuffer sb=new StringBuffer();
sb.append(String.valueOf(x1) + ” “);//Gui cho Server so dong cua ma tran thu nhat
sb.append(String.valueOf(y1) + ” “);//Gui cho Server so cot cua ma tran thu nhat
sb.append(String.valueOf(x) + ” “);//Gui cho Server so dong cua ma tran thu 2
sb.append(String.valueOf(y) + ” “);//Gui cho Server so cot cua ma tran thu 2
sb.append(String.valueOf(z) + ” “);//Gui cho Server phep toan

System.out.println (x1+” “+ y1+” “+ x+” “+ y +” “+ z);
System.out.println ();

for(int i=0;i<x;i++)
for(int j=0;j<y;j++)
sb.append(b[i][j]+” “);

for(int i=0;i<x;i++)
for(int j=0;j<y;j++)
sb.append(c[i][j]+” “);

dos.writeUTF(sb.toString());

/*** Nhan tu Server ***/
DataInputStream dis=new DataInputStream(client.getInputStream());
String s = dis.readUTF();
String str[]=s.split(” “);
x = Integer.valueOf(str[0]);//Lay so hang cua mang
y = Integer.valueOf(str[1]);//Lay so cot cua mang

/*** Khoi tao mang lay phan tu tu Str[] ***/
for(int i=0;i<x;i++)
for(int j=0;j<y;j++)
a[i][j] = Integer.valueOf(str[temp++]);

/*** In ra man hinh ***/
xuat(a);
client.close();
}catch (Exception e) {
e.printStackTrace();
}
}
}

Server:

import java.io.*;
import java.net.*;
import java.util.Scanner;

/**
*
* @author Sky
*/

public class Server{
static int temp = 5;
static int [][] a = new int [10][10];
static int [][] b = new int [10][10];
static int [][] c = new int [10][10];
static int x, y, z, x1, y1;

/*** Cong 2 ma tran ***/
public static void Cong2MaTran(){
for (int i = 0; i<x; i++)
for (int j = 0; j<y; j++){
a[i][j] = b[i][j] + c[i][j];
}
}
/*** End of Cong 2 ma tran ***/

/*** Nhan 2 ma tran ***/
public static void Nhan2MaTran(){
for (int i = 0; i<x; i++) {
for (int j = 0; j<y; j++) {
a[i][j] = 0;
for (int k = 0; k<y1; k++) {
a[i][j] += b[i][k] * c[k][j];
}
}
}
}
/*** End of Nhan 2 ma tran ***/

public static void xuatCong(int t[][]){
for (int i = 0; i<x; i++){
for (int j = 0; j<y; j++){
System.out.print (t[i][j] + ” “);
}
System.out.println ();
}
}

public static void xuatNhan(int t[][]){
for (int i = 0; i<x; i++){
for (int j = 0; j<y1; j++){
System.out.print (t[i][j] + ” “);
}
System.out.println ();
}
}

public static void main(String []args)
{

try
{
ServerSocket sk = new ServerSocket(8080);
Socket client = sk.accept();

/*** Nhan tu Client ***/
DataInputStream dis=new DataInputStream(client.getInputStream());
String s = dis.readUTF();
String str[] = s.split(” “);
x = Integer.valueOf(str[0]);//Lay so hang cua mang thu nhat
y = Integer.valueOf(str[1]);//Lay so cot cua mang thu nhat
x1 = Integer.valueOf(str[2]);//Lay so hang cua mang thu 2
y1 = Integer.valueOf(str[3]);//Lay so cot cua mang thu 2
z = Integer.valueOf(str[4]);//Lay phep toan

/*** Khoi tao mang lay phan tu tu Str[] ***/

for(int i=0;i<x;i++)
for(int j=0;j<y;j++)
b[i][j] = Integer.valueOf(str[temp++]);

for(int i=0;i<x1;i++)
for(int j=0;j<y1;j++)
c[i][j] = Integer.valueOf(str[temp++]);

switch(z){
case 1: Cong2MaTran();
xuatCong(a);
break;
case 2: Nhan2MaTran();
xuatNhan(a);
break;
}

/*** Gui cho Client ***/
DataOutputStream dos=new DataOutputStream(client.getOutputStream());

StringBuffer sb =new StringBuffer();

switch(z){
case 1:
sb.append(String.valueOf(x) + ” “);
sb.append(String.valueOf(y) + ” “);
break;
case 2:
sb.append(String.valueOf(x) + ” “);
sb.append(String.valueOf(y1) + ” “);
break;
}

for(int i=0;i<x;i++)
for(int j=0;j<y;j++)
sb.append(a[i][j]+” “);

dos.writeUTF(sb.toString());
sk.close();
}catch (Exception e) {
e.printStackTrace();
}
}
}

Thanks các bạn!

Advertisements

Trả lời

Mời bạn điền thông tin vào ô dưới đây hoặc kích vào một biểu tượng để đăng nhập:

WordPress.com Logo

Bạn đang bình luận bằng tài khoản WordPress.com Đăng xuất / Thay đổi )

Twitter picture

Bạn đang bình luận bằng tài khoản Twitter Đăng xuất / Thay đổi )

Facebook photo

Bạn đang bình luận bằng tài khoản Facebook Đăng xuất / Thay đổi )

Google+ photo

Bạn đang bình luận bằng tài khoản Google+ Đăng xuất / Thay đổi )

Connecting to %s