У меня проблемы с моей программой, когда мне нужно отправить строки из моего серверного bluetooth-сокета в мой клиентский bluetooth-сокет.Все работает хорошо, пока я отправляю только одну строку за раз (например, в чате), но если мне нужно за короткое время написать больше строк (для обмена информацией), строки не будут отделены от клиентского кода,Например, если я отправляю «FirstUser» и сразу после этого «SecondUser», клиент не читает «FirstUser», а затем «SecondUser».Он будет читать «FirstUserSecondUser».Как я могу избежать такого поведения?
Редактировать: Если я оставлю Thread в спящем режиме до того, как он сможет отправить новое сообщение, он прочитает правильные строки, но это решение не работает нормально для моих нужд.
Код сервера: отправка всем клиентам (отредактировано)
public synchronized void sendToAll(String message)
{
try {
Thread.sleep(100);
} catch (InterruptedException e1) {
e1.printStackTrace();
}
publishProgress(message);
for(OutputStream writer:outputList) {
try {
writer.write(message.getBytes());
writer.flush();
} catch (IOException e) {
System.out.println("Some-Error-Code");
}
}
}
Код сервера: чтение с клиента:
public void run() {
String nachricht;
int numRead;
byte[] buffer = new byte[1024];
while (runningFlag)
{
try {
if((numRead = inputStream.read(buffer)) >= 0) {
nachricht = new String(buffer, 0, numRead);
serverThread.handleMessage(nachricht);
}
}
catch (IOException e) {
this.cancel();
e.printStackTrace();
}
}
}
Код клиента: чтение с сервера (отредактировано))
@Override
protected Void doInBackground(Integer... ints) {
String nachricht = new String();
byte[] buffer = new byte[1024];
int numRead;
while (runningFlag)
{
try {
if(((numRead = inputStream.read(buffer)) >= 0)) {
nachricht = new String(buffer, 0, numRead);
publishProgress(nachricht);
}
}
catch (IOException e) {
clientGame.finish();
e.printStackTrace();
}
}
return null;
}
Код клиента: запись на сервер
public synchronized void write(String nachricht)
{
try {
Thread.sleep(100);
} catch (InterruptedException e1) {
e1.printStackTrace();
}
try {
outputStream.write(nachricht.getBytes());
outputStream.flush();
} catch (IOException e) {
this.cancel();
e.printStackTrace();
}
}
Я ценю любую маленькую помощь :).