У меня есть приложение Java, которое использует сокеты для связи с другим компьютером. Я использую DataOutputStream для записи данных на сервер и BufferedReader для чтения с сервера. Прежде чем решить проблему, я могу успешно отправлять и читать ответы с сервера несколько раз.Java DataOutputStream не отправляет данные в сокеты
Однако есть часть, где я посылаю два, writeBytes()
функций один за другим. На этом этапе мой сервер просто считывает первую строку и остается застрявшим на readline()
, хотя я отправляю еще одну строку на второй writeBytes()
.
Here's мой сниппет:
InetAddress ipServer = InetAddress.getByName(direcciones.get(0).host);
Socket clientSocket = new Socket(ipServer,25);
DataOutputStream outToServer = new DataOutputStream(clientSocket.getOutputStream());
BufferedReader inFromServer = new BufferedReader(new InputStreamReader(clientSocket.getInputStream()));
String response = inFromServer.readLine();
Вот где I'm получаю только email.data строку, а не "" что происходит потом.
outToServer.writeBytes(email.data+"\r\n");
outToServer.writeBytes("."+ "\r\n");
response = inFromServer.readLine();
Это, как данные считываются на сервере:
while(mailReady == false){
String linea;
linea = input.readLine();
System.out.println("INPUT Paso5: "+linea);
email.data += linea+"\n";
if(linea.equals(".")){
mailReady = true;
...
Где вход в BufferedReader.
Может ли кто-нибудь сказать мне, что здесь происходит?
Я перешел на BufferedWriter, используя write и newline(), но я все еще получаю ту же проблему. Кроме того, я пишу строки из-за «\ r \ n» в отправляемой строке. –
Итак, почему вы отметили этот ответ как правильный? – EJP