Prosty serwer i klient nie działa. Prośba o sprawdzenie

Odpowiedz Nowy wątek
2015-02-23 13:37
0

Próbuję napisać prosty program sieciowy.
Nie ma żadnych błędów, tylko że klient odbiera "null" a powinno być "Witaj kliencie".
Dlaczego? Proszę o pomoc :)

Oto kod:

Serwer:

import java.io.*;
import java.net.*;

public class Serwer {

    public static void main(String[] args) {
        ServerSocket gniazdo = null;
        try {
            gniazdo = new ServerSocket(8866);
        } catch (IOException e) {System.out.println("Nie można utworzyć gniazda serwera");}

        Socket połączenie = null;
        try {
            połączenie = gniazdo.accept();
        } catch (IOException e) {System.out.println("Nie można nawiązać połączenia z klientem");}

        OutputStream wy = null;
        try {
            wy = połączenie.getOutputStream();
        } catch (IOException e1) {System.out.println("Nie można pobrać strumienia wejściowego");}

        PrintWriter zapis = null;
        if (wy != null) zapis = new PrintWriter(wy);

        try {
            if (zapis != null) zapis.print("Witaj kliencie!");
        }catch (Exception e) {System.out.println("Nie można do strumienia wyjściowego zapisać danych.");}

        try {
            połączenie.close();
        } catch (IOException e) {System.out.println("Nie można zamknąć połączenia");}
    }

}

Klient:

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.net.Socket;

public class Klient {
    static Socket gniazdo = null;

    public static void main(String[] args) {

        try {
            gniazdo = new Socket("localhost", 8866);
        } catch (IOException e) {System.out.println("Nie można utworzyć gniazda klienta");}

        InputStream we = null;

        try {
            we = gniazdo.getInputStream();
        } catch (IOException e) {System.out.println("Nie można pobrać strumienia wejściowego");}

        BufferedReader odczyt = null;

        if (we != null) {
        odczyt = new BufferedReader(new InputStreamReader(we));
        }

            try {
                if(odczyt != null) {
                    String tekst = odczyt.readLine();
                    System.out.println("Serwer: " + tekst);
                }
            } catch (IOException e) {System.out.println("Nie można odczytać danych z serwera");}

            try {
                odczyt.close();
                we.close();
            }catch (IOException e) {System.out.println("Nie można zamknąć strumieni wejściowych");}

            try {
                gniazdo.close();
            } catch (IOException e) {System.out.println("Nie można zamknąć gniazda sieciowego klienta");}

    }

}

Pozostało 580 znaków

2015-02-23 15:34
0

Może spróbuj to opakować w klasę bufforedStream a potem w inne strumienie?

Pozostało 580 znaków

2015-02-23 17:24
0

zamknij PrintWriter w serwerze(tam gdzie zamykasz gniazdo)

zapis.close();

Pozostało 580 znaków

2015-02-24 11:23
0
garai napisał(a):

zamknij PrintWriter w serwerze(tam gdzie zamykasz gniazdo)

zapis.close();

Zrobiłem tak ale nie ma efektów.
Zastanawia mnie co innego mianowicie skoro odczyt jest równy null to w jaki sposób przechodzi przez warunek:

if(odczyt != null) {
                    String tekst = odczyt.readLine();
                    System.out.println("Serwer: " + tekst);
                }

W konsoli wyświetla się dokładnie to: Serwer: null
Ale skoro odczyt równa się null to nic nie powinno się wyświetlić.
Jak to możliwe?

Pozostało 580 znaków

2015-02-24 11:40
try {
            zapis.close();
            połączenie.close();
        } catch (IOException e) {System.out.println("Nie można zamknąć połączenia");}

Taki zapis na serwerze i u mnie działa :)

"Serwer: null" oznacza, że zmienna tekst jest nullem a nie odczyt.

Pozostało 580 znaków

2015-02-24 12:19
0

Dzięki, teraz działa :)
Problemem było to że najpierw zamykałem połączenie, a dopiero potem PrintWriter
Dzięki :D

Pozostało 580 znaków

Odpowiedz
Liczba odpowiedzi na stronę

1 użytkowników online, w tym zalogowanych: 0, gości: 1, botów: 0