Socket write error
Hejsa,jeg forsøger at sende nogle arraylist objekter over et netværk, men kan ikke rigtig få det til at funke. På klient siden får jeg en Error!!!....:java.net.SocketException: Software caused connection abort: socket write error
fejlen opstår i denne linie:
output.writeObject(firmaListe);
Her er min klient kode:
import java.net.*;
import java.io.*;
import java.util.*;
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
public class klient
{
static Socket socket;
static DataInputStream inStream;
static PrintStream outStream;
static String brugernavn;
static String password;
private ObjectOutputStream output; //Bruges til at sende arraylister med
private javax.swing.JLabel jLStatus; //modtages fra Upload.java således at brugeren via en jlabel kan følge med i statusen af uploadingen.
private boolean connected=false;
private JProgressBar jProgressBar; //så man kan følge med hvor langt upload tingen er nået.
private int a=0; //en tæller til jProgressBar
klient(String serverAdr, String brugernavn, String password, JLabel jLStatus, JProgressBar jProgressBar)
{
this.brugernavn = brugernavn;
this.password = password;
this.jLStatus = jLStatus;
this.jProgressBar = jProgressBar;
try
{
//Åbner socket til serveren
jLStatus.setText("Opretter forbindelse...");//udskrives til klienten
a++;
jProgressBar.setValue(a);
socket = new Socket(serverAdr, 8205);
//Åbner for modtagelse fra serveren
inStream = new DataInputStream(socket.getInputStream());
//Åbner for sending til serveren
outStream = new PrintStream(socket.getOutputStream());
//output = new ObjectOutputStream (socket.getOutputStream());
connected = true;
jLStatus.setText("Forbindelse oprettet");//udskrives til klienten
a++;
jProgressBar.setValue(a);
}
catch (UnknownHostException UnHoEx)
{
jLStatus.setText("Kan ikke finde server: " + serverAdr);
System.err.println("Kan ikke finde server " + serverAdr);
System.err.println(UnHoEx);
}
catch (ConnectException ex)
{
jLStatus.setText("Kan ikke forbinde til server: " + serverAdr);
System.err.println("Kan ikke forbinde til server: " + serverAdr);
System.err.println("server kører muligvis ikke");
System.err.println(ex);
}
catch (NoRouteToHostException ex)
{
jLStatus.setText("firewall forhindrer muligvis forbindelse");
System.err.println("Kan ikke forbinde til server: " + serverAdr);
System.err.println("firewall forhindrer muligvis forbindelse");
System.err.println(ex);
}
catch (IOException IOex)
{
jLStatus.setText("IOException kastet");
System.err.println("IOException kastet");
System.err.println(IOex);
}
}
public void validering(klient k, ArrayList firmaListe, ArrayList kPListe, ArrayList omsListe, ArrayList budgetListe)
{
if(connected)
{
jLStatus.setText("Validerer....");
boolean notValideret = true;
while(notValideret)
{
try
{
//System.out.println(inStream.readLine());//Udskriver tekst (der er forbindelse til server)
//System.out.println(inStream.readLine());//server spørger efter brugernavn
k.outStream.println(brugernavn);//skriver brugernavn til socket
//System.out.println(inStream.readLine());//server spørger efter password
k.outStream.println(password);//skriver password til socket
String StringNotValideret = inStream.readLine();//læser fra socket om klient er validere (true/false)
if (StringNotValideret.equals("true"))//Klient valideret
{
jLStatus.setText("Validering gennemført");//udskrives til klienten
notValideret=false;
a++;
jProgressBar.setValue(a);
jLStatus.setText("Uploader firmaer");
output = new ObjectOutputStream (socket.getOutputStream());
System.out.println("aaa");
output.writeObject(firmaListe);
output.flush();
System.out.println("aaa");
jLStatus.setText("Firmaer uploadet");
a++;
jProgressBar.setValue(a);
jLStatus.setText("Uploader kontaktperson");
output.writeObject(kPListe);
jLStatus.setText("Kontaktperson uploaded");
a++;
jProgressBar.setValue(a);
jLStatus.setText("Uploader omsætninger");
output.writeObject(omsListe);
jLStatus.setText("Omsætninger uploaded");
a++;
jProgressBar.setValue(a);
jLStatus.setText("Uploader budgetter");
output.writeObject(budgetListe);
jLStatus.setText("Budgetter uploadet");
a++;
jProgressBar.setValue(a);
jLStatus.setText("Uploadering gennemført");
a++;
jProgressBar.setValue(a);
}
else if (StringNotValideret.equals("false"))//Klient ikke valideret
{
jLStatus.setText("Forkert brugernavn eller password");
}
}
catch(Exception e){System.out.println("Error!!!....:"+e.toString());}
notValideret = false;
}
}
else
jLStatus.setText("Forbindelse kunne IKKE oprettes");//udskrives til klienten
}
}
Håber nogen kan hjælpe, mvh
Torben
