Witam!!!
Jestem tu nowy i mam mały problemik mam nadzieje że pomożecie. Problem polega na tym, że klient wysyła wiadomość a serwer jej nie odczytuje. Wiem że cos nie tak jest jak trafia na linie if(inn.hasNextLine())
. Dziękuje za odpowiedzi.
kod zrodlowy glowny
public class JavaStatki2 {
public static void main(String[] args) {
Thread t = new Thread(new Runnable() {
@Override
public void run() {
// TODO Auto-generated method stub
try {
serwer start = new serwer();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
});
t.start();
Thread tt = new Thread(new Runnable() {
@Override
public void run() {
// TODO Auto-generated method stub
glowna g = new glowna();
g.setVisible(true);
}
});
tt.start();
}
}
kod zrodlowy klienta
public class glowna extends JFrame {
JPanel panel = new JPanel();
JTextArea area = new JTextArea("area", 20, 10);
JTextField tekst = new JTextField();
JButton reset = new JButton("Reset");
JButton wyslij = new JButton("Wyslij");
Socket s;
InputStream in;
OutputStream ou;
PrintWriter out;
Scanner inn;
glowna() {
try {
s = new Socket("localhost", 8187);
if (s.isConnected()) {
in = s.getInputStream();
inn = new Scanner(in);
ou = s.getOutputStream();
out = new PrintWriter(ou);
}
} catch (IOException e) {
// TODO Auto-generated catch block
System.out.println("Nie mozna sie polaczyc");
e.printStackTrace();
}
panel.add(reset);
panel.add(wyslij);
add(area, BorderLayout.NORTH);
add(tekst, BorderLayout.CENTER);
add(panel, BorderLayout.SOUTH);
reset.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent arg0) {
tekst.setText("");
area.setText("");
}
});
wyslij.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent arg0) {
out.print(tekst.getText());
}
});
Thread odbierz = new Thread(new Runnable() {
@Override
public void run() {
while(true) {
String odebranyTekst = inn.nextLine();
area.append(odebranyTekst+"\n");
}}
});
odbierz.start();
}
}
kod zrodlowy serwera
public class serwer {
serwer() throws IOException {
ServerSocket soket = new ServerSocket(8187);
System.out.print("Server dziala");
while(true) {
Socket s=soket.accept();
System.out.println("Spawning");
Runnable r = new Server2(s);
Thread t =new Thread(r);
t.start();
}
}
}
class Server2 implements Runnable {
private Socket incoming;
InputStream in;
OutputStream ou;
Scanner inn;
PrintWriter out;
public Server2(Socket i) {
incoming=i;
}
public void run() {
try {
try {
in = incoming.getInputStream();
ou = incoming.getOutputStream();
inn = new Scanner(in);
out = new PrintWriter(ou, true /* autoFlash*/);
out.println("Wpisz By aby wyjsc");
boolean done = false;
while(!done) {
if(inn.hasNextLine()) {
String line = inn.nextLine();
System.out.println("Serwer: " + line);
out.println("Serwer: "+line);
if(line.trim().equals("By")) done=true; }
}
}
finally {
System.out.println("Close");
incoming.close();
}
}
catch (IOException e) {
System.out.println("Blad w try");
e.printStackTrace();
}
}
}