Salve,
ho provato a risolvere inviando un elemento dell'array per volta...il programma però non funziona...credo che ci siano problemi nello scambio di dati tra client e server e viceversa, ma non riesco a capire come risolvere.Qualcuno può aiutarmi a capire dove sbaglio ?
Client :
codice:
import java.io.*;
import java.net.*;
class Client{
public static void main(String argv[]) throws Exception {
double prodScal;
String numElem;
BufferedReader inFromUser1 = new BufferedReader(new InputStreamReader((System.in)));
BufferedReader inElem = new BufferedReader(new InputStreamReader((System.in)));
BufferedReader inFromUser2 = new BufferedReader(new InputStreamReader((System.in)));
Socket clientSocket = new Socket("localhost", 6789);
DataOutputStream outToServer1= new DataOutputStream(clientSocket.getOutputStream());
DataOutputStream outToServer2 = new DataOutputStream(clientSocket.getOutputStream());
DataOutputStream outToServer3 = new DataOutputStream(clientSocket.getOutputStream());
BufferedReader inFromServer = new BufferedReader( new InputStreamReader(clientSocket.getInputStream()));
System.out.println("Quanti elementi deve avere ciascuno dei due array?");
numElem=inElem.readLine();
outToServer1.writeBytes(numElem);
//inserire gli elementi dell'array uno da tastiera
for(int i=0; i<Integer.parseInt(numElem); i++){
System.out.println("Inserire l'elemento n. "+ i+" dell'array 1 (numero elementi= "+numElem +" ):");
String elemento=inFromUser1.readLine();
outToServer2.writeBytes(elemento);
}
//inserire gli elementi dell'array 2 da tastiera
for(int j=0; j<Integer.parseInt(numElem); j++){
System.out.println("Inserire l'elemento n. "+ j+" dell'array 2 :");
String elemento2=inFromUser2.readLine();
outToServer3.writeBytes(elemento2);
}
prodScal = Double.parseDouble(inFromServer.readLine());
System.out.println("FROM SERVER : Il prodotto vettoriale è " + prodScal);
clientSocket.close();
}
}
Server:
codice:
import java.io.*;
import java.net.*;
class Server{
public static void main(String argv[]) throws Exception {
double[] primoArray = null;
double[] secondoArray = null;
String numElem;
double prodScal = 0;
ServerSocket welcomeSocket = new ServerSocket(6789);
while(true) {
Socket connectionSocket = welcomeSocket.accept();
System.out.println("server connesso");
BufferedReader inFromClient1 = new BufferedReader(new InputStreamReader(connectionSocket.getInputStream()));
BufferedReader inFromClient3 = new BufferedReader(new InputStreamReader(connectionSocket.getInputStream()));
BufferedReader inFromClient2 = new BufferedReader(new InputStreamReader(connectionSocket.getInputStream()));
DataOutputStream outToClient = new DataOutputStream(connectionSocket.getOutputStream());
numElem=inFromClient3.readLine();
//creo array con elem in arrivo dal client
for(int i=0; i<Integer.parseInt(numElem); i++){
primoArray[i]=Double.parseDouble(inFromClient1.readLine());
}
//creo array con elem in arrivo dal client
for(int j=0; j<Integer.parseInt(numElem); j++){
secondoArray[j]=Double.parseDouble(inFromClient2.readLine());
}
//calcolo prodVett
for(int i=0; i<primoArray.length; i++){
prodScal += primoArray[i]*secondoArray[i];
}
System.out.println("il prod scal è:"+ prodScal);
outToClient.writeDouble(prodScal);
}
}
}