根据命令JAVA将字符串发送到客户端

时间:2013-04-25 03:59:18

标签: java android sockets networking

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

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

客户

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();
            }
        }

有什么想法吗?

1 个答案:

答案 0 :(得分:0)

这是你的错误

  outToServer.writeBytes("GETDATA");

正确的代码是

  outToServer.writeBytes("GETDATA\n");

作为您的使用读取线,您应发送包含换行符的完整行