Witam, jestem nowa w programowaniu. Ale już zaczynam mieć pewne problemy, nie wiem czy to wina mojego kompilatora, czy po prostu dalej popełniam błędy w pisaniu, więc byłabym wdzięczna gdyby koledzy zerknęli na moje wypociny.
Mam tutaj 2 kody jeden dla klienta drugi dla serwera. I teraz póki co zwykłe wysyłanie wiadomości działa, jednak nie wiem czy to u mnie, czy generalnie nie działa tutaj funkcja, że jak napiszę "koniec" to się aplikacja zamyka.
Drugi problem to taki, że muszę zapodać wyjątek dla sytuacji kiedy klient próbuje nawiązać połączenie z serwerem w sytuacji kiedy pod wskazanym adresem i numerem portu nie działa żaden serwer.
I tutaj jest kod dla klienta :
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.net.Socket;
public class Klient {
public static final int PORT = 10900;
public static final String HOST = "localhost";
public static void Klient(String[] args) {
try{
Socket sock = new Socket(HOST, PORT);
System.out.println("Nawiązałem połączenie: "+ sock);
boolean done = false;
BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
PrintWriter out = new PrintWriter(sock.getOutputStream());
while(!done){
System.out.println("Wysyłamy: ");
String str = reader.readLine();
if(str.equalsIgnoreCase("koniec")){
done = true;
System.out.println("Koniec połączenia");
}
out.print(str);
out.flush();
}
out.close();
reader.close();
sock.close();
}catch(Exception e){
System.err.print(e);
}
try
{
server = new Socket(4444);
}
catch (IOException e)
{
System.out.println("Błąd w porcie" + 4444 + ", " + e);
System.exit(1);
}
Socket client = null;
try
{
client = server.accept();
}
catch (IOException e)
{
System.out.println("Nie udalo sie zrealizowac polaczenia " + 4444 + ", " + e);
System.exit(1);
}
}
A tutaj dla Serwera:
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.net.ServerSocket;
import java.net.Socket;
public class Serwer {
public static final int PORT = 10900;
public static final String HOST = "localhost";
public static void Serwer (String[] args){
try{
ServerSocket server = new ServerSocket(PORT);
Socket sock = server.accept();
System.out.print("jest połączenie: "+ sock);
BufferedReader reader = new BufferedReader(new InputStreamReader(sock.getInputStream()));
boolean done = false;
while(!done){
String str = reader.readLine();
System.out.println("Nadeszło: "+ str);
if(str.equalsIgnoreCase("koniec")){
done = true;
System.out.println("Koniec połączenia");
}
}
reader.close();
sock.close();
server.close();
}catch(Exception e){
System.err.print(e);
}
}
}
Wiem, że to jest niby proste, ale wciąż nie ogarniam w całości jak powinno się programować.