2016-02-12 34 views
0

我有一个java应用程序,它使用套接字与另一台计算机通信。我正在使用DataOutputStream将数据写入服务器,并使用BufferedReader从服务器读取数据。在解决问题之前,我可以成功地从服务器多次发送和读取响应。Java DataOutputStream不发送数据到套接字

然而,有一部分我先后发送了两个函数,即writeBytes()函数。此时,即使我在第二个writeBytes()上发送了另一个字符串,我的服务器也只是读取第一个字符串并停留在readline()上。

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