Avatar billede zapzie Nybegynder
20. december 2004 - 01:11 Der er 3 kommentarer og
1 løsning

ObjectInputStream med socket

Jeg sidder her og leger lidt med Sockets, men kan ikke helt få det til at virke.
Problemet er at den ikke vil oprette en ObjectInputStream, den går bare i stå som om den står og venter på noget.
Her er min kode:

import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import java.net.Socket;

public class KrunkOrmClient {
   
    public static final String IP = "127.0.0.1";
    public static final int PORT = 4393;
   
    private ObjectInputStream input;
    private ObjectOutputStream output;
    private Socket s;
   
    public KrunkOrmClient() {
        try {
            System.out.println("1");
            s = new Socket(IP, PORT);
            System.out.println("2");
            input = new ObjectInputStream(s.getInputStream());
            System.out.println("3");
            output = new ObjectOutputStream(s.getOutputStream());
            System.out.println("4");
            register();
        } catch(Exception e) {
            e.printStackTrace();
        }
    }
   
    private void register() {
        BufferedReader keyboard = new BufferedReader(new InputStreamReader(System.in));
        boolean accepted;
        try {
            do {
                System.out.print("Enter nick: ");
                String nick = keyboard.readLine();
                output.writeObject(nick);
                output.flush();
                accepted = input.readBoolean();
                System.out.println(accepted);
            } while(!accepted);
        } catch(Exception e) {
            e.printStackTrace();
        }
    }
   
    public static void main(String[] args) {
        new KrunkOrmClient();
    }
}

Det er her det går galt:
input = new ObjectInputStream(s.getInputStream());

Hvis jeg udkommenterer den linje så kører den fint igennem. Ingen problemer med at lave ObjectOutputStream'en.

Håber i kan hjælpe.
Avatar billede arne_v Ekspert
20. december 2004 - 07:15 #1
Hvad med server ?

Laver den output før input ?
Avatar billede zapzie Nybegynder
20. december 2004 - 10:35 #2
Nope, den lavede også input først, men gik også i stå.
Nu har jeg byttet om på de to linjer, så output bliver lavet først og så virker det.

Kan du give en begrundelse på hvorfor det er sådan?

Smid lige et svar, så du kan få pointene
Avatar billede arne_v Ekspert
20. december 2004 - 10:44 #3
input = new ObjectInputStream(s.getInputStream());

venter på en eller anden måde på at den anden ende laver

output = new ObjectOutputStream(s.getOutputStream());

så hvis både client og server står og venter på hinanden, så kommer de jo
ikke videre.
Avatar billede zapzie Nybegynder
20. december 2004 - 10:46 #4
Det kunne min lærer ikke engang fortælle mig.

Du skal da have mange tak.
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