Попытка написать приложение клиент-сервер UDP с использованием Swing. Каждый экземпляр клиента должен иметь возможность отправлять сообщения на сервер (из потока рассылки событий), а также постоянно прослушивать сообщения от других клиентов, ретранслируемых через сервер (в рабочем потоке с использованием SwingWorker). Я пытаюсь реализовать класс ListenWorker, чей метод doInBackground будет непрерывно прослушивать UDP-дейтаграммы и публиковать данные в методе process (), с обновлением JTextArea на клиентском JFrame с сообщением. Тем не менее, я сталкиваюсь с некоторыми трудностями из-за моей неопытности в SwingWorker и общего параллелизма Swing. Вот суть кода, который я написал до сих пор:
public class ListenWorker extends SwingWorker<void, String> {
public ListenWorker(int port, JTextArea textArea){
// set up socket
}
protected void doInBackground(){
while(true){
// code to receive Datagram
publish(messageFromDatagram);
}
}
protected void process(List<String> messages){
for(String message : messages){
textArea.append(message);
}
}
}
Тем не менее, моя IDE выдает ошибку в первой строке, где я начинаю определение класса, говоря "недопустимое начало типа" из-за отсутствия там. Насколько я вижу, я хочу, чтобы мой doInBackground был пустым методом, поскольку я намерен запускать его бесконечно долго, слушая дейтаграммы от различных клиентов. Java, похоже, не хочет, чтобы я использовал его как пустой метод. Как бы я обойти это?