serwer tcp swing java

Odpowiedz Nowy wątek
2011-08-12 19:55
marcinkk
0

witam, robię serwer tcp w swingu w javie, mam gui stworzone, ale gdy chce żeby nasłuchiwał to gui zamarza, czytałem że muszę osobne wątki stworzyć, chciałem prosić o jakieś rady związane z wątkami tzn, jakie funkcje muszą się znaleźć w wątkach aby gui nie zamarzało.

Pozostało 580 znaków

2011-08-12 20:09
0

Kurs wielowątkowości w Swingu: http://download.oracle.com/ja[...]iswing/concurrency/index.html


"Programs must be written for people to read, and only incidentally for machines to execute." - Abelson & Sussman, SICP, preface to the first edition
"Ci, co najbardziej pragną planować życie społeczne, gdyby im na to pozwolić, staliby się w najwyższym stopniu niebezpieczni i nietolerancyjni wobec planów życiowych innych ludzi. Często, tchnącego dobrocią i oddanego jakiejś sprawie idealistę, dzieli od fanatyka tylko mały krok."
Demokracja jest fajna, dopóki wygrywa twoja ulubiona partia.

Pozostało 580 znaków

2011-08-12 20:21
marcinkk
0
Wibowit napisał(a)

Kurs wielowątkowości w Swingu: http://download.oracle.com/ja[...]iswing/concurrency/index.html

dziękuje ale chce coś wiedzieć jakie wątki powinny się znaleźć w serwerze aby gui nie "zamarzało" i żeby nasłuchiwał

Pozostało 580 znaków

2011-08-12 21:05
0

Nie dziękuj tylko klepnij SwingWorkera. Wszystko jest opisane pod linkiem. Jeśli chcesz mieć skalowalny serwer to zainteresuj się NIO i non blocking io, np: http://www.java2s.com/Code/Ja[...]k-Protocol/Nonblockserver.htm


"Programs must be written for people to read, and only incidentally for machines to execute." - Abelson & Sussman, SICP, preface to the first edition
"Ci, co najbardziej pragną planować życie społeczne, gdyby im na to pozwolić, staliby się w najwyższym stopniu niebezpieczni i nietolerancyjni wobec planów życiowych innych ludzi. Często, tchnącego dobrocią i oddanego jakiejś sprawie idealistę, dzieli od fanatyka tylko mały krok."
Demokracja jest fajna, dopóki wygrywa twoja ulubiona partia.

Pozostało 580 znaków

2011-08-12 21:22
marcinkk
0

raczej nie o to mi chodzi, najpierw wywołuje serwer_socket=new ServerSocket(port); później Socket socket=serwer_socket.accept(); i całe gui mi zamarza, gniazdo do nasłuchiwania niby się tworzy bo komendę netstat wywołuje i pokazuje że port o podanym jest otwarty.

Pozostało 580 znaków

2011-08-12 21:46
0
javadoc napisał(a)

accept

public Socket accept()
throws IOException
Listens for a connection to be made to this socket and accepts it. The method blocks until a connection is made.
A new Socket s is created and, if there is a security manager, the security manager's checkAccept method is called with s.getInetAddress().getHostAddress() and s.getPort() as its arguments to ensure the operation is allowed. This could result in a SecurityException.

Returns:
the new Socket
Throws:
IOException - if an I/O error occurs when waiting for a connection.
SecurityException - if a security manager exists and its checkListen method doesn't allow the operation.
SocketTimeoutException - if a timeout was previously set with setSoTimeout and the timeout has been reached.
IllegalBlockingModeException - if this socket has an associated channel, and the channel is in non-blocking mode.
See Also:
SecurityManager.checkAccept(java.lang.String, int)

Jeśli wykonasz ServerSocket.accept() w EDT to GUI będzie zamrożone co najmniej, aż do momentu kiedy ktoś się podłączy. Jeżeli będziesz dalej coś robił w EDT bez zwalniania go Swingowi to GUI będzie zamrożone jeszcze dłużej. Dlatego powinieneś wrzucić ServerSocket.accept() do SwingWorkera, który siedzi sobie w innym wątku, a Swing go w miarę wolnego czasu odpytuje o wyniki.

Cały Swing jest jednowątkowy (podobnie zresztą jak chyba wszystkie windowing toolkity), a więc jak mu zapchasz ten wątek to będziesz miał zamrożone GUI. Proste i logiczne. Wszystko jest wytłumaczone pod pierwszym moim linkiem.

SwingWorkera odpala się np metodą EventQueue.invokeLater.


"Programs must be written for people to read, and only incidentally for machines to execute." - Abelson & Sussman, SICP, preface to the first edition
"Ci, co najbardziej pragną planować życie społeczne, gdyby im na to pozwolić, staliby się w najwyższym stopniu niebezpieczni i nietolerancyjni wobec planów życiowych innych ludzi. Często, tchnącego dobrocią i oddanego jakiejś sprawie idealistę, dzieli od fanatyka tylko mały krok."
Demokracja jest fajna, dopóki wygrywa twoja ulubiona partia.
edytowany 1x, ostatnio: Wibowit, 2011-08-12 21:50

Pozostało 580 znaków

Odpowiedz
Liczba odpowiedzi na stronę

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