Java DataOutputStream不向套接字发送数据

时间:2016-02-12 04:30:22

标签: java sockets

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

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

这是我的片段:

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();

这里是我获取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;
        ...

其中input是BufferedReader。

谁能告诉我这里发生了什么?

1 个答案:

答案 0 :(得分:1)

你正在读行,但你不是在写行。您应使用DataOutoutStream.writeBytes()后跟BufferedWriter.write()

而不是BufferedWriter.newline().