如何从我的服务器回答我的客户?

时间:2013-12-03 17:07:52

标签: java android tcp-ip

我的服务器有以下代码:

                try
                {
                    Socket = serverSocket.accept(); 
                    inputStreamReader = new InputStreamReader(Socket.getInputStream());
                    bufferedReader = new BufferedReader(inputStreamReader);
                    message = bufferedReader.readLine();
                    switch(message)
                    {
                        case "GET / HTTP/1.1":
                        {                       
                            break;
                        }
                        default:
                        {
                            System.out.println(message);
                        }
                    }
                    inputStreamReader.close();
                    Socket.close();
                }       
                catch(Exception e)
                {
                    System.out.println("Problem while waiting for messages (" + e.toString() + ")");
                }

和我的(Android)客户端的代码:

private String GetPC(String strToPC)
    {
        final String strToPCFinal = strToPC; 
        Thread SendingThread = new Thread()
        {
            public void run()
            {
                try
                {
                    client = new Socket("192.168.178.22", 14510);
                    printwriter = new PrintWriter(client.getOutputStream());
                    printwriter.write(strToPCFinal);

                    printwriter.flush();
                    printwriter.close();
                    client.close();

                }       
                catch(Exception e)
                {
                    System.out.println("Problem while sending test message (" + e.toString() + ")");
                }
            }
        };
        SendingThread.start();
        return "";
    }

我现在的问题是:如何将答案(如果文本成功传输到我的电脑)回到我的Android客户端?

1 个答案:

答案 0 :(得分:0)

private String readReply(SocketChannel socket) throws IOException {
    final StringBuilder reply = new StringBuilder();
    final ByteBuffer buffer = ByteBuffer.allocate(512);
    int numBytesRead;
    do {
        numBytesRead = socket.read(buffer);
        if (numBytesRead > 0) {
            buffer.flip();
            reply.append(decoder.decode(buffer).toString());
            buffer.clear();
            if (reply.indexOf(".") > -1) {
                break;
            }
        }
    } while (numBytesRead > -1);

    socket.close();

    return reply.toString();
}

使用下面的代码段发送到服务器(如果是localhost)

private String send(String command) throws IOException {
    final SocketAddress address = new InetSocketAddress("10.0.2.2", PORT);
    final SocketChannel socket = SocketChannel.open(address);
    final CharBuffer buffer = CharBuffer.wrap(command);
    socket.write(encoder.encode(buffer));

    final String reply = readReply(socket); // Get response

    socket.close();
    return reply;
}