0

だから私はタブレットを持っていて、基本的にそれをTCP(またはUDP)ソケットサーバーにして、複数の電話がデータを送信できるようにしたいと考えています。また、応答を電話に送り返すことができるようにしたいと考えています。私が今まで持っていたものは機能していません...

サーバ:

Log.i("Server", "Starting server...");
                try {
                    ServerSocket ss = new ServerSocket(8080);
                    Log.i("Server", "Server status: " + ss.isBound());
                    while(true){
                        //Server is waiting for client here, if needed
                        Socket s = ss.accept();
                        Log.i("Server", "Server is accepting connections: " + s.isConnected());
                        BufferedReader input = new BufferedReader(new InputStreamReader(s.getInputStream()));
                        PrintWriter output = new PrintWriter(s.getOutputStream(),true); //Autoflush
                        Log.i("Server", "Initialized input and output");
                        String st = input.readLine();
                        Log.i("Server", "From client: "+st);
                        output.println("Good bye and thanks for all the fish :)");
                    }

                } catch (UnknownHostException e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                } catch (IOException e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                }

そしてクライアント(電話):

try {
                    Socket s = new Socket("192.168.0.106", 8080);

                    //outgoing stream redirect to socket
                    OutputStream out = s.getOutputStream();

                    PrintWriter output = new PrintWriter(out);
                    output.println("Hello Android!");
                    BufferedReader input = new BufferedReader(new InputStreamReader(s.getInputStream()));
                    //read line(s)
                    String st = input.readLine();
                    tv.setText(st);
                    //Close connection
                    s.close();


                } catch (UnknownHostException e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                } catch (IOException e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                }
4

1 に答える 1

1

クライアントがprintlnをフラッシュしていない可能性があります

コンストラクターで autoflush を指定してみてください

PrintWriter output = new PrintWriter(out, true);

または手動でプリントの下にフラッシュを追加します

output.println("Hello Android!");
output.flush();
于 2012-05-31T04:28:49.740 に答える