我有一个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。
谁能告诉我这里发生了什么?
答案 0 :(得分:1)
你正在读行,但你不是在写行。您应使用DataOutoutStream.writeBytes()
后跟BufferedWriter.write()
BufferedWriter.newline().