0

我正在尝试在连接时从服务器向客户端发送“Hello”...服务器端程序运行正常,但客户端代码出现“数据未准备好读取”的问题

这些是我的代码...请帮助...

服务器端 :

    import java.net.*;
    import java.io.*;

    public class ServerSide
    {
    public static void main(String args[])
{   
       try
       {    
           ServerSocket ss = new ServerSocket(8888);
       System.out.println("Waiting...");    
           Socket server=ss.accept();
           PrintStream ps= new PrintStream(server.getOutputStream());
           ps.print("Hello...");
           ps.flush();
       System.out.println("Data Sent...");

       }
       catch(Exception e)
       {
         System.out.println("Error : " + e.toString());
       }
   }
    }

客户端 :

    import java.net.*;
    import java.io.*;

    public class ClientSide 
    {
public static void main(String args[])
{
    try
       {
       String str= new String();
           Socket client=new Socket(InetAddress.getLocalHost(),8888);
           BufferedReader br = new BufferedReader(new InputStreamReader(client.getInputStream()));
               if(br.ready())
               {
                    str=br.readLine();
                System.out.println(str);
               }
           else
               {
                    System.out.println("Data not ready to read from Stream");
               }
       }
       catch(Exception e)
       {
        System.out.println("Error : " + e.toString());
       }
}

}

4

2 回答 2

4

如果创建后没有立即BufferedReader获得任何数据,则您当前失败。你为什么期望它有?就我个人而言,我很少找到有用的方法——我建议你打电话并阻止,直到有可用数据。ready()available()readLine

如评论中所述,如果您尝试从客户端读取行,则需要在服务器上写入行 - 因此请考虑使用println而不是print. (我个人不是一PrintStream开始就喜欢,但那是另一回事。)

于 2013-08-14T14:28:19.707 回答
0

利用

String in = null;
while ((in = br.readLine()) != null) {
    // This will loop until EOF and in will hold the last read line
}
于 2013-08-14T14:34:09.583 回答