Моя цель - собрать данные от клиентов, которые отправляют данные на сервер UDP, объединить данные в строку (сейчас только для тестирования) и отправить всю объединенную строку обратно клиенту. Связь между UDPClient и UDPServer работает идеально. Я могу отправлять данные и получать их. Но мне интересно, почему я не могу объединить данные в StringBuffer, потому что, когда я пытаюсь это сделать, клиент всегда получает самую первую строку, которую я когда-либо отправлял. И строка больше не меняется, независимо от того, что я отправляю на сервер. Вот код класса сервера:
import java.io.IOException;
import java.net.DatagramPacket;
import java.net.DatagramSocket;
import java.net.InetAddress;
import java.net.SocketException;
public class UDPServer extends Thread {
DatagramSocket serverSocket;
DatagramPacket receivePacket;
String sentence;
InetAddress IPAddress;
StringBuffer data = new StringBuffer();
public UDPServer() throws SocketException {
serverSocket = new DatagramSocket(9876);
}
public void run() {
while (true) {
byte[] receiveData = new byte[1024];
byte[] sendData = new byte[1024];
receivePacket = new DatagramPacket(receiveData, receiveData.length);
try {
serverSocket.receive(receivePacket);
} catch (IOException e) {
System.out.println("receive....");
e.printStackTrace();
}
sentence = new String(receivePacket.getData());
IPAddress = receivePacket.getAddress();
int port = receivePacket.getPort();
data.append(sentence);
sendData = data.toString().trim().getBytes();
DatagramPacket sendPacket = new DatagramPacket(sendData,
sendData.length, IPAddress, port);
try {
serverSocket.send(sendPacket);
} catch (IOException e) {
System.out.println("send...");
e.printStackTrace();
}
}
}
}
Я уже отлаживал это: переменная "предложения" всегда получает правильные данные, но строка data.append (предложение); ничего не делает. Он просто не добавляет данные. Почему это так?