Я новичок в области манипуляций с сокетом, в настоящее время я использую свой Java-клиент для связи с моим C-сервером, и у меня возникла небольшая проблема с чтением данных с моего сервера.
Когда я запускаю свой сервер, он корректно возвращает все данные (я отправляю запрос SQL от моего клиента Java, но всякий раз, когда я пытаюсь прочитать его с моего клиента с помощью DataInputStream.
Я в основном пытаюсь отобразить имена пользователей в правой части моего приложения, когда я запускаю его, отправляя SQL-запрос на сервер «ВЫБЕРИТЕ имя пользователя ОТ имени пользователя, ГДЕ состояние =« онлайн »», сервер C отправляет ответ с :
«Aoisuki
AntoineLg "
Когда я пытаюсь прочитать данные с помощью readLine (); в цикле while отображается только имя пользователя "Aoisuki".
Я не думаю, что нужно показывать вам код моего C-сервера, потому что я уже пробовал с клиентом C, и все работало хорошо.
Итак, вот мой код Java от клиента:
public String recvMsg() throws IOException {
s = new Socket(addr,port);
din = new DataInputStream(s.getInputStream());
d = new BufferedReader(new InputStreamReader(din));
StringBuilder result = new StringBuilder();
String tmp = "";
try {
while(((tmp=d.readLine())!=null)){
result.append(tmp);
d.wait();
}
} catch(Exception e){
....
}
return result.toString();
}
Я уже пытался поместить "d.wait ()" после цикла while, но у меня возникла другая проблема: мой Клиент не запускался, пока сервер не был закрыт, но у меня отображались оба имени пользователя (это то, что я хотите)
Любая помощь будет высоко ценится.