Все, что я хочу сделать, - это запустить поток для прослушивания связи через определенный порт.
Я начинаю это с кнопки 'ok' на jDialog.Когда нажата кнопка «ОК», jDialog должен спрятаться ( HostClientDialog.setVisible (false); ), который работает, когда там нет строки начала потока.
try {
HostClientDialog.setVisible(false);
// start a thread that listens for incoming messages
new gameCycle().start();
} catch (Exception e) { }
В строке new gameCycle (). Start (); вызывается следующий код:
public class gameCycle extends Thread {
//public gameCycle(){
// super();
//}
@Override
public void run() {
try {
ServerSocket connection = new ServerSocket(4242);
// Wait for connection
Socket s = connection.accept();
// Socket input
BufferedReader in = new BufferedReader(new
InputStreamReader(s.getInputStream()));
// for receiving moves
while (true) {
String message = "";
message = in.readLine();
if (message != null && !message.equals("")) {
// do something with message
}
sleep(100);
} // end while
} catch (Exception e) { }
} // end run
} // end class
Я понял, что приведенный выше код цикличен до получения сообщения, а затем выполняючто-то с сообщением.Но когда вы выполняете этот код, окно jDialog создается снова (мгновенно) и повторно предлагает пользователю нажать ОК.Он не позволит пользователю пройти через окно jDialog, он просто будет постоянно их повторять.
Я довольно новичок в работе с потоками (я не сделал намного больше, чем печать с использованием нескольких потоков),таким образом, я чувствую, что могу быть реализован неправильно.Но я искал примеры, и они, кажется, более или менее похожи на мои.
РЕДАКТИРОВАТЬ (29.11.2010 в 1:30 AM EST)
Похоже, у меня не совсем есть идея об отключении TCP, как я и думал.Моя цель с потоком и последующим циклом while заключалась в следующем:
- В фоновом режиме программа будет ожидать любые сообщения, отправленные в ее направлении
- Если получит сообщение, оно получитобновите что-нибудь в графическом интерфейсе, а затем вернитесь к ожиданию новых сообщений
Все время, позволяя пользователю постоянно использовать графический интерфейс.