Java套接字编程将写字节写入readline

Java套接字编程将写字节写入readline,java,sockets,Java,Sockets,我正在尝试让java服务器和客户端进行通信。对于将数据流传输到服务器,我有以下代码: Socket ClientSocket = null; ClientSocket = new Socket(IPAddress, portInt); DataOutputStream outToClient = new DataOutputStream(ClientSocket.getOutputStream()); outToClient.writeBytes(command); ou

我正在尝试让java服务器和客户端进行通信。对于将数据流传输到服务器,我有以下代码:

  Socket ClientSocket = null;
ClientSocket = new Socket(IPAddress, portInt); 
DataOutputStream outToClient = new DataOutputStream(ClientSocket.getOutputStream());

    outToClient.writeBytes(command);
    outToClient.flush();
对于服务器,我有:

        ServerSocket mysocket = new ServerSocket(8081);
        Socket connectionsocket = mysocket.accept();

        BufferedReader inFromClient =
           new BufferedReader(new InputStreamReader(connectionsocket.getInputStream()));

        DataOutputStream outToClient = new DataOutputStream(connectionsocket.getOutputStream());

        //program hangs here, client not sending

        GetRequest = inFromClient.readLine();
        System.out.println("Received: " + GetRequest);

这些只是整个代码的一小部分,我发现当readLine()出现时,程序挂起在服务器端;到达。我试图用writeBytes(命令)发送数据;其中command是一个字符串。有什么建议吗?谢谢。

不要直接使用
readLine

试试这个

If( inFromClient.ready()){
   // read string here.
}
可能是缓冲区未准备好,您正在尝试读取。所以它会产生问题

将字节写入readline

停在那里。如果您使用的是
readLine()
您使用的是
BufferedReader
,它是
读卡器
,这意味着您应该使用
写卡器
,这意味着您应该使用
BufferedWriter
,当您读取行时,您必须写入行,这意味着您必须写入行终止符(您目前没有这样做),这意味着您应该使用
BufferedWriter.newline()


或者
PrintWriter.println(),
,但是不要忘记检查错误,因为它会吞噬异常。

好的,谢谢,这表明我的输入流还没有准备好。我运行了一个if语句,它将打印,所以我可以延迟输入流?
if(!infomclient.ready()){System.out.println(“infomclient not ready”);}
它能产生的唯一“问题”是
readLine()
中的一个块。这通常是一个糟糕的建议,在这种情况下毫无意义。