Cześć
Napisałem serwer który przesyła Stringa
do klienta. Mam teraz problem z zamknięciem tego serwera, jedyne rozwiązanie jakim się posługuję to zakończenie procesu odpowiedzialnego za serwer. Doczytałem, że muszę wywołać metodę socket.close()
ale nie radzę sobie z obsługą wyjątku "NullPointerException", mam taki kod - serwer:
public class Zapis
{
public static Socket gniazdo;
public static ServerSocket gniazdoSrw;
public static void main(String[] args)
{
new Zapis().zapis();
}
public void zapis()
{
try
{
gniazdoSrw = new ServerSocket(5000);
while(true)
{
gniazdo = gniazdoSrw.accept();
PrintWriter pisacz = new PrintWriter(gniazdo.getOutputStream());
String zmienna1 = "test";
pisacz.println(zmienna1);
pisacz.close();
}
}catch(Exception ex)
{
ex.printStackTrace();
}
}
public void exit()
{
try
{
gniazdo.close();
}catch(Exception ex)
{
ex.printStackTrace();
}
}
}
Do tego klient, który to odbiera:
public class Odczyt
{
public static Socket gniazdo;
public static void main(String[] args) throws InterruptedException
{
new Odczyt().odczyt();
Zapis z1 = new Zapis();
z1.exit();
}
public void odczyt()
{
try
{
gniazdo = new Socket("127.0.0.1", 5000);
BufferedReader czytacz = new BufferedReader(new InputStreamReader(gniazdo.getInputStream()));
String zmienna1 = czytacz.readLine();
System.out.println(zmienna1);
czytacz.close();
}catch(Exception ex)
{
ex.printStackTrace();
}
}
}
Nie wiem nawet czy dobrze do tego podchodzę - z tego co zrozumiałem to muszę zamknąć gniazdo po stronie serwera, czyli to moja metoda exit
. Chciałem ją wywołać w innej klasie (w tym przypadku miała zostać wywołana po odebraniu znaków z bufora) tak, żeby podpiąć to do przycisku w późniejszej wersji.
Zdaję sobie sprawę, że pewnie coś źle zrozumiałem ale już od jakiegoś czasu stoję w miejscu.