Witam.
Piszę obecnie prosty komunikator klient/server. Napisałem już aplikację w konsoli, która działa poprawnie jednak chciałem to napisać również okienkowo.
I pojawia się problem ponieważ podczas tworzenia połączenia program się zawiesza i udało mi się tylko ustalić, która część kodu to powoduje.
Zaznaczam, że ten sam kod w konsoli działa poprawnie.
EDIT: Udało mi się stworzyć naprawić błąd i aplikacja się obecnie nie zamraża, ale pomimo, że klient się połączył do serwera nie otrzymuje komunikatu potwierdzenia (wyświetlany w jTextArea1). Jak to można naprawić.
I drugie pytanie: jak można spoza wątku sprawdzić, czy jest obecnie podłączony klient do serwera.
Wywołanie inicjalizacji:
private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {
String sPort=jComboBox1.getSelectedItem().toString();
int port = Integer.parseInt(sPort);
try{
ServerSocket serverSocket = new ServerSocket(port);
jTextArea1.append("Server waiting for client on port " + serverSocket.getLocalPort()+"\n");
}
catch (Exception e){}
jTextArea1.append("Server waiting for connection \n");
new Thread (new newSocket(serverSocket,jTextArea1)).start();
if(klient nawiązał połączenie) ... //JAK TO SPRAWDZIĆ
jButton1.setEnabled(false);
}
Wątek:
class newSocket implements Runnable
{
public newSocket(ServerSocket s,JTextArea _area)
{
serverSocket=s;
jTextArea1=_area;
}
public void run()
{
try
{
Socket socket = serverSocket.accept(); // accept connection
jTextArea1.append("New client asked for a connection"); //to nie działa
} catch(IOException e){e.printStackTrace(); }
}
private JTextArea jTextArea1;
private ServerSocket serverSocket;
}
Proszę o pomoc.