Witam
Mam problem z programem, który nie działa do końca poprawnie. Składa się on z programu serwera wysyłającego informację do klienta oraz programu klienta odbierającego od niego informację przesłaną przez sieć. Problem polega na tym, że po kliknięciu przetłumacz słowo nie jest tłumaczone. Oto klasy tego programu.
.
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+ "\n");
zapis.flush();
System.out.println("Wyslano slowo : " + slowoEN);
}
} catch(IOException e){ System.out.println("Problem wejścia - wyjścia."); }
/* koniec pętli while: */
}
}
}
import java.net.*;
import java.io.*;
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
public class Klient {
public static void main(String[] args) {
OknoKlient okno = new OknoKlient();
okno.setSize(300,200);
okno.setTitle("Okno klienta.");
okno.setVisible(true);
okno.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
}
class OknoKlient extends JFrame implements ActionListener{
JTextField pole1=null, pole2=null;
Socket polaczenie = null;
InputStream we=null;
OutputStream wy=null;
Watek1 w1=null;
Watek2 w2=null;
public OknoKlient() {
setLayout(new FlowLayout());
JLabel lab1=new JLabel("Wpisz polskie słowo do przetłumaczenia:");
add(lab1);
pole1 =new JTextField(20);
add(pole1);
JButton przycisk1=new JButton("wyczyść");
przycisk1.addActionListener(this);
add(przycisk1);
JButton przycisk2=new JButton("przetłumacz");
przycisk2.addActionListener(this);
add(przycisk2);
JButton przycisk3=new JButton("koniec");
przycisk3.addActionListener(this);
add(przycisk3);
JLabel lab2=new JLabel("Słowo w języku angielskim:");
add(lab2);
pole2 =new JTextField(20);
add(pole2);
try{
polaczenie= new Socket("localhost", 8866);
} catch(Exception e){ }
/* koniec konstruktora: */
}
public void actionPerformed(ActionEvent ev) {
if(ev.getActionCommand()=="wyczyść") {
pole1.setText("");
pole2.setText("");
}
if(ev.getActionCommand()=="przetłumacz") {
w2=new Watek2(polaczenie,wy);
w2.start();
}
if(ev.getActionCommand()=="koniec") {
w1=new Watek1(polaczenie,wy);
w1.start();
}
}
class Watek1 extends Thread {
Socket polaczenie;
OutputStream wy;
DataOutputStream zapis = null;
InputStream we;
BufferedReader odczyt = null;
public Watek1(Socket polaczenie,OutputStream wy)
{
this.polaczenie=polaczenie;
this.wy=wy;
}
public void run() {
try{
wy=polaczenie.getOutputStream();
zapis = new DataOutputStream(wy);
zapis.writeBytes("koniec");
polaczenie.close();
System.exit(0);
} catch(Exception e){ }
/* koniec metody run(): */
}
/* koniec klasy wew: */
}
class Watek2 extends Thread {
Socket polaczenie;
OutputStream wy;
DataOutputStream zapis = null;
InputStream we;
BufferedReader odczyt = null;
public Watek2(Socket polaczenie,OutputStream wy)
{
this.polaczenie=polaczenie;
this.wy=wy;
}
public void run() {
try{
wy=polaczenie.getOutputStream();
String slowoPL=pole1.getText();
if( slowoPL!=null && !(slowoPL.equals("")) ) {
zapis = new DataOutputStream(wy);
zapis.writeBytes(slowoPL + "\n");
we=polaczenie.getInputStream();
odczyt= new BufferedReader (new InputStreamReader(we));
String slowoEN=odczyt.readLine();
if (slowoEN!=null && !(slowoEN.equals("")) ) {
pole2.setText(slowoEN);
}
else if (slowoEN==null && !(slowoEN.equals("")) ) {
pole2.setText("");
}
}
} catch(Exception e){ }
/* koniec metody run(): */
}
/* koniec klasy wew: */
}
/* koniec klasy Oknopolaczenie: */
}