1

テキスト編集ビューとボタンを持つアプリケーションを作成しようとしています。このボタンは、編集テキストの内容を TCP 接続を介してサーバーに送信します。

編集テキストの送信は完了しましたが、ボタンを 1 回クリックすると、アプリケーションがクラッシュします。複数のメッセージを送信できるように、これをループに入れるにはどうすればよいですか? ここに私の情報源があります

public class MainActivity extends Activity {

    //Handler h;

    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        final EditText eText = (EditText) findViewById(R.id.address);
        final TextView tView = (TextView) findViewById(R.id.pagetext);
        final Button button = (Button) findViewById(R.id.ButtonGo);
                button.setOnClickListener(new Button.OnClickListener() {
                    public void onClick(View v) {
                        try {
                            Socket s = new Socket("192.168.0.117", 4447);
                            BufferedReader in = new BufferedReader(new InputStreamReader(s.getInputStream()));
                            final BufferedWriter out = new BufferedWriter(new OutputStreamWriter(s.getOutputStream()));
                            //send output msg
                            String outMsg = ((EditText)findViewById(R.id.address)).getText().toString().trim();
                            out.write(outMsg);
                            out.flush();
                            Log.i("TcpClient", "sent: " + outMsg);
                        } catch (UnknownHostException e) {
                            tView.setText(e.toString());
                            Log.v("Tcp",e.toString());
                        } catch (IOException e) {
                            tView.setText(e.toString());
                            Log.v("Tcp",e.toString());
                        }catch (Exception e) {
                            tView.setText(e.toString());

                        } 
                    }
                }); 
    }
}
4

1 に答える 1

0

これは、2 つの異なるボタンを使用して実現しました。接続ボタンとメッセージ送信ボタン。サーバーがソケットを再作成しようとしたときに、TCP 接続が切断され、サーバーが例外をキャッチして異常を起こし始めたと思います。これが新しいコードです。

            bConnect.setOnClickListener(new Button.OnClickListener() {
                public void onClick(View v) {
                    try {
                        Socket s = new Socket("192.168.0.117", 4447);
                        out = new BufferedWriter(new OutputStreamWriter(s.getOutputStream()));
                        BufferedReader in = new BufferedReader(new InputStreamReader(s.getInputStream()));
                    } catch (UnknownHostException e) {
                        tView.setText(e.toString());
                        Log.v("Tcp",e.toString());
                    } catch (IOException e) {
                        tView.setText(e.toString());
                        Log.v("Tcp",e.toString());
                    }catch (Exception e) {
                        tView.setText(e.toString());

                    } 
                }
            });

            bSend.setOnClickListener(new Button.OnClickListener() {
                public void onClick(View v) {
                    try {
                        String outMsg = ((EditText)findViewById(R.id.address)).getText().toString().trim();
                        out.write(outMsg);
                        out.flush();
                        Log.i("TcpClient", "sent: " + outMsg);  
                    } catch (IOException e) {
                        // TODO Auto-generated catch block
                        e.printStackTrace();
                    }


                    finally{

                    }
                    }


                });
于 2013-01-02T03:03:39.150 に答える