Cześć.
Chciałem spróbować sił z aplikacjami sieciowymi i znalazłem pewien tutorial. Jednakże o ile z pierwszą aplikacją nie miałem problemu to z tą nie mogę sobie poradzić. Podsyłam gotowy kod klienta i serwera(taki mały śmieszny słownik), który według autora tutoriala powinien działać, jednak tak nie jest, chyba coś się dzieje ze strumieniem wyjściowym, bo zmieniałem w kliencie strumień na DataInputStream i za pomocą metody avaible() zwróciło mi wartość 0.
Prosiłbym o pomoc co zrobić żeby program zwrócił mi słowo przetłumaczone i wytłumaczył dlaczego tak a nie inaczej.
Pozdrawiam
Paweł.
//program Serwera:
import java.net.*;
import java.io.*;
public class Serwer {
public static void main(String args[]) {
ServerSocket polaczenie = null;
Socket gniazdo = null;
InputStream we = null;
OutputStream wy = null;
BufferedReader odczyt = null;
BufferedReader odczytWe = null;
DataOutputStream zapis = null;
String slowoPL="",slowoEN="";
try {
polaczenie=new ServerSocket(8866);
}
catch(IOException e)
{ System.out.println("Nie można utworzyć gniazda serwera."); }
try {
gniazdo=polaczenie.accept();
}
catch(IOException e)
{ System.out.println("Nie można nawiązać połączenia z klientem."); }
try {
we=gniazdo.getInputStream();
}
catch(IOException e)
{ System.out.println("Nie można pobrać strumienia wejściowego."); }
try {
wy=gniazdo.getOutputStream();
}
catch(IOException e)
{ System.out.println("Nie można pobrać strumienia wyjściowego."); }
while(true){
try{
odczyt = new BufferedReader(new InputStreamReader(we));
slowoPL = odczyt.readLine();
if((slowoPL == null) || slowoPL.equals("koniec"))
{
gniazdo.close();
System.exit(0);
}
else if( slowoPL!=null )
{
System.out.println("Odczytano slowo : " + slowoPL);
if(slowoPL.equals("okno")){ slowoEN="window"; }
else if(slowoPL.equals("ekran")){ slowoEN="screen"; }
else if(slowoPL.equals("oko")){ slowoEN="eye"; }
else if(slowoPL.equals("ucho")){ slowoEN="ear"; }
else if(slowoPL.equals("dom")){ slowoEN="house"; }
else if(slowoPL.equals("noga")){ slowoEN="leg"; }
else if(slowoPL.equals("cukier")){ slowoEN="sugar"; }
else { slowoEN="";
}
zapis = new DataOutputStream(wy);
zapis.writeBytes(slowoEN+ " ");
zapis.flush();
System.out.println("Wyslano slowo : " + slowoEN);
}
} catch(IOException e){ System.out.println("Problem wejścia - wyjścia."); }
/* koniec pętli while: */
}
}
}
//program Klienta:
import java.net.*;
import java.io.*;
public class Klient {
public static void main(String args[]) {
Socket gniazdo = null;
InputStream we=null;
OutputStream wy=null;
BufferedReader odczyt = null;
BufferedReader odczytWe = null;
DataOutputStream zapis = null;
String slowoPL="",slowoEN="";
try {
gniazdo=new Socket("localhost",8866);
}
catch(UnknownHostException e)
{ System.out.println("Nieznana nazwa hosta."); }
catch(IOException e)
{ System.out.println("Nie można utworzyć gniazda klienta."); }
try {
we=gniazdo.getInputStream();
} catch(IOException e)
{ System.out.println("Nie można pobrać strumienia wejściowego."); }
try {
wy=gniazdo.getOutputStream();
} catch(IOException e)
{ System.out.println("Nie można pobrać strumienia wyjściowego."); }
System.out.println("Wpisz polskie slowo, a serwer je przetlumaczy.");
while(true){
try{
odczytWe = new BufferedReader(new InputStreamReader(System.in));
slowoPL = odczytWe.readLine();
if (slowoPL.equals("koniec"))
{
gniazdo.close();
System.exit(0);
}
else if( slowoPL!=null ) {
zapis = new DataOutputStream(wy);
zapis.writeBytes(slowoPL + " ");
zapis.flush();
System.out.print("Po polsku " + slowoPL);
odczyt = new BufferedReader (new InputStreamReader (we));
slowoEN=odczyt.readLine();
if ( slowoEN!=null )
{
System.out.println(" to po angielsku " + slowoEN);
}
}
} catch(IOException e){ System.out.println("Problem wejścia - wyjścia."); }
/* koniec pętli while: */
}
}
}