У меня есть небольшой кусочек кода, который запускается в апплете, который содержит элементы управления SWING и используется для записи информации в сокет на определенном порте, а затем прослушивает ответ.Это работает нормально, но есть проблема с этим.Слушатель порта находится в цикле, пока сервер не получит нулевое значение.Я хочу, чтобы пользователи могли выполнять другие действия в графическом пользовательском интерфейсе, создаваемом апплетом, в ожидании ответа сервера (это может занять несколько минут).Мне также нужно беспокоиться о разрыве соединения между сервером и клиентом.Но при написании кода апплет, кажется, зависает (это действительно в цикле), пока сервер не ответит.Как я могу позволить слушателю выполнять его прослушивание в фоновом режиме, позволяя другим вещам происходить в программе.Я предполагаю, что мне нужно использовать потоки, и я уверен, что для этого приложения это легко реализовать, но мое отсутствие твердого фундамента мешает мне.Ниже приведен код (вы можете увидеть, как это просто).Как я могу улучшить его, чтобы он делал то, что мне нужно, чтобы сделать>> 1001 *
public String writePacket(String packet) {
/* This method writes the packet to the port - established earlier */
System.out.println("writing out this packet->"+packet+"<-");
out.println(packet);
String thePacket = readPacket(); //where the port listener is invoked.
return thePacket;
}
private String readPacket() {
String thePacket ="";
String fromServer="";
//Below is the loop that freezes everything.
try {
while ((fromServer = in.readLine()) != null) {
if (thePacket.equals("")) thePacket = fromServer;
else
thePacket = thePacket+newLine+fromServer;
}
return thePacket; //when this happens, all listening should stop.
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
return null;
}
}
Спасибо,
Эллиот