2016-02-12 4 views
0

У меня есть приложение 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.

Может ли кто-нибудь сказать мне, что здесь происходит?

ответ

1

Вы читаете строки, но не записываете строки. Вместо DataOutoutStream.writeBytes() вы должны использовать BufferedWriter.write(), а затем BufferedWriter.newline().

+0

Я перешел на BufferedWriter, используя write и newline(), но я все еще получаю ту же проблему. Кроме того, я пишу строки из-за «\ r \ n» в отправляемой строке. –

+0

Итак, почему вы отметили этот ответ как правильный? – EJP

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