java - problem z Socket

0

Witam
Mam mały problem z obsługą Socket, wszystko jest ogolnie cacy - komunikator łączy się i wysyła wiadomość server<->client, ale niestety po wysłaniu tej jednej wiadomości gniazdo sie zamyka i trzeba od nowa się łączyć. Proszę o wytknięcie błędu w kodzie lub w myśleniu (gorzej jak to i to będzie:D).


bWait.addActionListener(new ActionListener()
{
public void actionPerformed(ActionEvent zdarzenia)
{
tInfo.append("Oczekiwanie na połączenie...\n");
new Thread(
new Runnable()
{
public void run(){
try { konnect = 1;

                                     socket = server.accept();
                                      if(socket.isConnected()){
                                     tInfo.append("Nawiązano połączenie\n");
                                     ObjectInputStream ois = new ObjectInputStream(socket.getInputStream());
            try {
                message = (String) ois.readObject();
            } catch (ClassNotFoundException ex) {
                 tInfo.append("Błąd odczytu wiadomości\n");
            }

        tMessage.append("Kient: "+message+"\n");}
                    } catch (IOException e) {
                                      e.printStackTrace();
                                                     }}
               }).start();
               
        }
    });

// wysylanie wiadomosci
bSend.addActionListener(new ActionListener()
{
public void actionPerformed(ActionEvent zdarzenia)
{
if(socket.isBound()){
try{
tMessage.append("Serwer: "+tSend.getText()+"\n");
ObjectOutputStream oos = new ObjectOutputStream(socket.getOutputStream());
oos.writeObject(tSend.getText());

               }catch (IOException e){ tInfo.append("Wiadomość nie została wysłana\n");}
        } else tInfo.append("Brak połączenia\n");
        }
    });
1

Generalnie jest tak:

  1. Uruchamiasz serwer (w oddzielnym watku)
  2. Nasluchujesz na nim, az otrzymasz polaczenie (nowego Socketa)
  3. Dla tego nowego socketa tworzysz "czytacza" (np BufferedReader, ObjectInputStream, etc) i "pisarza" (ObjectOutputStream, PrintWriter, etc)
  4. W tym wątku gdzie obslugujesz tego socketa czytasz/piszesz komunikaty a gniazdo serwerowe (to pierwsze) jest gotowe na kolejne podlaczenie sie klienta
0

Lol... najpierw odpowiedź była oznaczona jako rozwiązanie, a teraz już nie. Co Ci wciąż nie działa ? :>

1 użytkowników online, w tym zalogowanych: 0, gości: 1