Salve a tutti ho un problema con questo piccolo programmi che sto facendo per esercitarmi a capire bene il funzionamento del server e il client...Il software è molto semplice come funziona: il client invia la al server (utilizzando una gui) l'operazione dei due numeri che desidera, dopodicchè il server riceve elabora e rimanda il risultato...Ho riscontrato un problema per qunato riguarda l'inviare la risposta al client ( metodo invia della classe connessione ) il debug si ferma sulla Socket s = new Socket...Le varie operazioni funzionano ma non capisco il perchè mi cade la connessione..Ovvimnte non è curato tutto nei minimi particolari la calcolatrice :P..Vi sarei molto grati se mi date una mano ho un esame a giorni e non riesco ancora a capire il problema grazie tante vi posto il codice.
import java.io.IOException;
public class Server {
private String dati;
public Server() throws ClassNotFoundException{
try {
//ServerSocket ss = new ServerSocket(5454);
Connessioni conn = new Connessioni();
while(true){
dati=(String)conn.ricevi(5454);
this.dati=Integer.toString(operazioni(dati));
conn.invia(dati,"127.0.0.1", 5454);
}
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
public int operazioni(String dati){
int piu =-1;
int meno =-1;
int per =-1;
int div =-1;
int risultato=0;
piu=this.dati.indexOf("+");
if(piu!=-1){
int lunghezza=this.dati.length();
int a=Integer.parseInt(dati.substring(piu+1, lunghezza));
int secondo_numero=a;
int b=Integer.parseInt(dati.substring(0, piu));
int primo_numero=b;
risultato=primo_numero + secondo_numero;
}
meno=this.dati.indexOf("-");
if(meno!=-1){
int secondo_numero=Integer.parseInt(dati.substring(men o+1, this.dati.length()-1));
int primo_numero=Integer.parseInt(dati.substring(0, meno));
risultato=primo_numero - secondo_numero;
}
per=this.dati.indexOf("*");
if(per!=-1){
int secondo_numero=Integer.parseInt(dati.substring(per +1, this.dati.length()-1));
int primo_numero=Integer.parseInt(dati.substring(0, per));
risultato=primo_numero * secondo_numero;
}
div=this.dati.indexOf("/");
if(div!=-1){
int secondo_numero=Integer.parseInt(dati.substring(div +1, this.dati.length()-1));
int primo_numero=Integer.parseInt(dati.substring(0, div));
risultato=primo_numero/secondo_numero;
}
return risultato;
}
public static void main(String[] args) throws ClassNotFoundException {
// TODO Auto-generated method stub
System.out.println("****++++*****");
new Server();
}
}
import java.io.IOException;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import java.net.ServerSocket;
import java.net.Socket;
//Classe che si occupa delle connessioni del Server
public class Connessioni {
public Object ricevi (int porta) throws IOException, ClassNotFoundException{
ServerSocket ss = new ServerSocket(porta);
Socket s = ss.accept();
ObjectInputStream ois = new ObjectInputStream(s.getInputStream());
Object dati;
dati = ois.readObject();
ois.close();
s.close();
ss.close();
return dati;
}
public void invia (Object dati, String ip,int porta) throws IOException{
//Qui è dove mi dà l'errore quando deve riinviare il risultato.
Socket s = new Socket(ip,porta);
ObjectOutputStream oos = new ObjectOutputStream(s.getOutputStream());
oos.writeObject(dati);
oos.close();
s.close();
}
}
import java.io.IOException;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import java.net.Socket;
import java.net.UnknownHostException;
//Classe che si occupa delle connessioni del client
public class Client {
public Object ricevi(String ip,int porta) throws UnknownHostException, IOException, ClassNotFoundException{
Socket s = new Socket(ip,porta);
ObjectInputStream ois = new ObjectInputStream(s.getInputStream());
Object dati=ois.readObject();
ois.close();
s.close();
return dati;
}
public void invia (String ip,int porta,Object dati) throws UnknownHostException, IOException{
Socket s = new Socket(ip,porta);
ObjectOutputStream oos = new ObjectOutputStream(s.getOutputStream());
oos.writeObject(dati);
oos.close();
s.close();
}
}
import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.IOException;
import java.net.UnknownHostException;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JTextArea;
public class GUIcalcolatrice extends JFrame implements ActionListener{
private static final long serialVersionUID = 1L;
private JButton bottone0,bottone1,bottone2,bottone3,bottone4,botto ne5,bottone6;
private JButton bottone7,bottone8,bottone9,bottone10,bottone11,bot tone12,bottone13,bottone14;
private JTextArea testo;
private JPanel pannello;
private Client cc;
public GUIcalcolatrice(){
setSize(300,400);
bottone0 = new JButton("0");
bottone1 = new JButton("1");bottone2 = new JButton("2");
bottone3 = new JButton("3");bottone4 = new JButton("4");
bottone5 = new JButton("5");bottone6 = new JButton("6");
bottone7 = new JButton("7");bottone8 = new JButton("8");
bottone9 = new JButton("9");bottone10 = new JButton("+");
bottone11 = new JButton("-");bottone12 = new JButton("*");
bottone13 = new JButton("/");bottone14 = new JButton("=");
testo = new JTextArea();
pannello = new JPanel(new GridLayout(4,4));
pannello.add(bottone7);pannello.add(bottone8);pann ello.add(bottone9);
pannello.add(bottone4);pannello.add(bottone5);pann ello.add(bottone6);
pannello.add(bottone1);pannello.add(bottone2);pann ello.add(bottone3);
pannello.add(bottone0);pannello.add(bottone10);
pannello.add(bottone11);pannello.add(bottone12);
pannello.add(bottone13);pannello.add(bottone14);
pannello.add(testo);
getContentPane().add(pannello);
bottone0.addActionListener(this);
bottone1.addActionListener(this);bottone2.addActio nListener(this);
bottone3.addActionListener(this);bottone4.addActio nListener(this);
bottone5.addActionListener(this);bottone6.addActio nListener(this);
bottone7.addActionListener(this);bottone8.addActio nListener(this);
bottone9.addActionListener(this);bottone10.addActi onListener(this);
bottone11.addActionListener(this);bottone12.addAct ionListener(this);
bottone13.addActionListener(this);bottone14.addAct ionListener(this);
cc = new Client();
}
@Override
public void actionPerformed(ActionEvent e) {
// TODO Auto-generated method stub
Object source = e.getSource();
if(source==bottone0){
testo.append("0");
}
if(source==bottone1){
testo.append("1");
}
if(source==bottone2){
testo.append("2");
}
if(source==bottone3){
testo.append("3");
}
if(source==bottone4){
testo.append("4");
}
if(source==bottone5){
testo.append("5");
}
if(source==bottone6){
testo.append("6");
}
if(source==bottone7){
testo.append("7");
}
if(source==bottone8){
testo.append("8");
}
if(source==bottone9){
testo.append("9");
}
if(source==bottone10){
testo.append("+");
}
if(source==bottone11){
testo.append("-");
}
if(source==bottone12){
testo.append("*");
}
if(source==bottone13){
testo.append("/");
}
if(source==bottone14){
try {
cc.invia("127.0.0.1",5454,testo.getText());
try {
String risposta=(String) cc.ricevi("127.0.0.1", 5454);
testo.setText(risposta);
risposta="";
} catch (ClassNotFoundException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
} catch (UnknownHostException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
} catch (IOException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
}
}
@SuppressWarnings("deprecation")
public static void main(String[] args) {
// TODO Auto-generated method stub
new GUIcalcolatrice().show();
}
}
Grazie tante per il vostro aiuto![]()