Java套接字编程写入readline

时间:2015-02-22 03:37:00

标签: java sockets

我正在尝试让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是一个字符串。有什么建议?感谢。

2 个答案:

答案 0 :(得分:1)

  

readbytes到readline

停在那儿。如果您使用的是readLine(),那么您使用的是BufferedReader Reader,这意味着您应该使用Writer与之对话,这意味着您应该使用BufferedWriter,当你正在读行时,你必须写行,这意味着写一个行终止符(你目前没有这样做),这意味着你应该使用BufferedWriter.newline()

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

答案 1 :(得分:-1)

不要直接使用readLine

相反尝试这个

If( inFromClient.ready()){
   // read string here.
}

缓冲区可能没有准备就绪并且您正在尝试阅读。所以它可能会产生问题。