0

所以我试图让服务器坐下来听等待来自客户端的连接。客户端发送一些字符串,服务器根据收到的内容执行一些操作。现在我想要发生的是客户端通过一些命令发送请求返回数据并让服务器获取它需要的内容并将字符串发送回来。

没什么大不了的吧?好吧,由于某种原因我无法让它工作,我最好的猜测是它没有正确关闭套接字。我无法弄清楚为什么它不会或我做错了什么。

客户

String data = "";

    DataOutputStream outToServer = null;
    BufferedReader input;

    try {
        outToServer = new DataOutputStream(clientSocket.getOutputStream());         
        outToServer.writeBytes("GETDATA");
        outToServer.flush();


      input = new BufferedReader(new InputStreamReader(clientSocket.getInputStream()));
      data = input.readLine();
      Log.d("ANSWER: ",  data);
      input.close();


    } catch (IOException e) {
        Log.d("Error: ", e.toString());


    }  

服务器

ServerSocket listeningSocket = new ServerSocket(9008);
        BufferedReader fromClient ;
        PrintStream os;


        while(true) {
            Socket clientSocket = listeningSocket.accept();
            ServerConnection clientConnection = new ServerConnection(clientSocket);
            os = new PrintStream(clientSocket.getOutputStream());
            fromClient= new BufferedReader(new InputStreamReader(clientSocket.getInputStream()));
            if(fromClient.readLine().equals("GETDATA")){
                os.println("DATA");
                os.flush();
                clientSocket.wait();
                clientSocket.close();
            }
            else{
            clientConnection.run();
            }
        }

有任何想法吗?

4

1 回答 1

0

这是你的错误

  outToServer.writeBytes("GETDATA");

正确的代码是

  outToServer.writeBytes("GETDATA\n");

当您使用 readline 时,您应该发送带有换行符的完整行

于 2013-04-25T04:19:00.473 回答