Avatar billede trp79 Nybegynder
22. juli 2003 - 10:54 Der er 5 kommentarer og
1 løsning

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
Avatar billede arne_v Ekspert
22. juli 2003 - 11:26 #1
Alle de objekter du har i ArrayList er de serializable ?
Avatar billede conrad Nybegynder
22. juli 2003 - 11:30 #2
bare en ide:
Er de objekter der ligger i firmaListe Serialized?
Avatar billede conrad Nybegynder
22. juli 2003 - 11:30 #3
glem det havde ikke refreshed et par minutter :)
Avatar billede trp79 Nybegynder
22. juli 2003 - 11:37 #4
Ja det skulle jeg mene, klasserne "implements Serializable", så det skulle vel kunne gøre det?
Avatar billede trp79 Nybegynder
22. juli 2003 - 11:42 #5
Stop stop....
Jeg har fundet ud af det, af en eller anden åndsvag grund havde jeg udkommenteret modtagningen af objekterne på serverside... (input = new ObjectInputStream (incoming.getInputStream());)

Og så er det jo klart at jeg ikke der er en write error fra klient side...

Beklager ulejligheden, mvh
Torben
Avatar billede trp79 Nybegynder
22. juli 2003 - 11:43 #6
Så er det jo klart at der en en write error fra klient side, skulle der stå...
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester

IT-JOB

Politiets Efterretningstjeneste

Tech-studentermedhjælpere i PET

Forsikrings- og pensionsakademiet A/S

IT-teknisk profil

Forsvarsministeriets Materiel- og Indkøbsstyrelse

Senior Platform Engineer