2016-11-22 1 views
0

У меня возникли проблемы с отправкой и получением строк от клиента к серверу. Предположим, что у меня правильно установлены сокеты. Это то, что я использую для отправки/приема на стороне сервера:Ошибка отправки/получения строк для клиента/сервера

fromClient = new BufferedReader(new InputStreamReader(clientSocket.getInputStream())); 
toClient = new BufferedWriter(new OutputStreamWriter(clientSocket.getOutputStream())); 

String clientInput; 
clientInput = fromClient.readLine(); 

как мой сервер принимает входные данные от клиента.

Клиентская же сделка:

toServer = new BufferedWriter(new OutputStreamWriter(socket.getOutputStream())); 
fromServer = new BufferedReader(new InputStreamReader(socket.getInputStream())); 
inputLine = bufferedReader.readLine(); //inputLine reads from the console 
toServer.write(inputLine); 

Я могу отправить сообщение на сервер сообщений, и он будет получать его, но когда я раскомментировать этот бит для клиента, чтобы получить ответ от сервера:

//  serverInput = fromServer.readLine(); 
// 
//  System.out.println(serverInput); 

Он будет висеть, и серверная сторона не получит отправленное начальное сообщение. Я понятия не имею, что не так, и я просто хочу получить ответ с сервера. Любая помощь приветствуется. Спасибо

+0

Вы вызывали 'toClient.write (clientInput)' на стороне сервера? –

+0

после clientInput = fromClient.readLine() ;, Я печатаю clientInput и печатает его. Но если я использую «toClient.write» («получите это пожалуйста»); после и раскомментировать бит на стороне клиента, он будет зависать и даже не получать начальное сообщение – ricefieldboy

+1

nevermind .... Я понял это. Я должен был добавить + '\ n' в параметр записи, а затем сделать флеш потом. – ricefieldboy

ответ

0

BufferedReader.readLine() лишит вас символа новой строки.

Это означает, что на стороне клиента, inputLine не имеет косую \n, что означает, что клиент не послал сигнал окончания строки на сервер и наоборот.

стороне клиента

toServer.write(...); 
toServer.newLine(); // <--- send new line 
toServer.flush(); // <--- flush buffered data 

Сервер должен сделать подобную вещь.

Смежные вопросы