Witam,
Napisałem sobie chat w javie na socketach z wieloma klientami z tym że mam problem z zakończeniem połączenia.
-Wątek głowny servera ma otwarty ServerSocket który czeka na podłaczenie klientów. Oczywiscie jest to w bloku try/catch a w finally znajduje się ServerSocket.close().
-Kazdy klient ma własny wątek servera który nazwałem ClientHandling, ktory po otwarciu DataInputStream robi:
while(true)
{
BroadcastMessage(nickname, input.readUTF());
}
} catch (IOException e) {
try {
input.close();
} catch (IOException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
e.printStackTrace();
}
- W watku klienta dzieje się w zasadzie to samo (zamkniecie socketa w exception) tyle ze odbiera tą wiadomosc ktora wywła funkcja Broadcast.. i wyswietla w GUI
-Oprócz tego Client ma tez funkcje sendmsg ktora wysyla na output wiadomosc napisana w GUI.
Po odpaleniu programu w Eclipse, postawieniu servera, podlaczeniu klientow, wszystko dziala, gdy wylacze wszystkie okna eclipse pokazuje ze program wciaz dziala bo moge go zatrzymac czerwonym kwadracikiem.
Gdy wlacze program ponownie i proboje postawic server - leci exception:
java.net.SocketException: Unrecognized Windows Sockets error: 0: JVM_Bind
więc podejrzewam ze moj port na ktorym stal socketserver wciaz jest zajety...
Jakies sugestie?
dziekuje z góry
[email protected]