0

これが私の仕事です: ソケット通信を使用して PC と携帯電話を接続します。ソケット接続で入力したメッセージの送信に問題があります。eclipse を使用して、PC から電話にプログラムを実行します。テキストボックスにテキストを入力します。送信ボタンを押したところ、テキストを送信できず、電話に反映させました。プログラム コードにエラーがなくなりました。これはコードのリンクです: http://android-er.blogspot.sg/2011/01/simple-communication-using.html

これらはエラーのない私のコードです:

public class AndroidClient extends Activity {

EditText textOut;
TextView textIn;

/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.socket_client);

    textOut = (EditText)findViewById(R.id.textout);
    Button buttonSend = (Button)findViewById(R.id.send);
    textIn = (TextView)findViewById(R.id.textin);
    buttonSend.setOnClickListener(buttonSendOnClickListener);
}

Button.OnClickListener buttonSendOnClickListener
= new Button.OnClickListener(){

    @Override
    public void onClick(View arg0) {
        // TODO Auto-generated method stub
        Socket socket = null;
        DataOutputStream dataOutputStream = null;
        DataInputStream dataInputStream = null;

        try {
            socket = new Socket("10.217.137.207", 8888);
            dataOutputStream = new DataOutputStream(socket.getOutputStream());
            dataInputStream = new DataInputStream(socket.getInputStream());
            dataOutputStream.writeUTF(textOut.getText().toString());
            textIn.setText(dataInputStream.readUTF());
        } catch (UnknownHostException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
        finally{
            if (socket != null){
                try {
                    socket.close();
                } catch (IOException e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                }
            }

            if (dataOutputStream != null){
                try {
                    dataOutputStream.close();
                } catch (IOException e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                }
            }

            if (dataInputStream != null){
                try {
                    dataInputStream.close();
                } catch (IOException e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                }
            }
        }
    }};
}
4

1 に答える 1

0

コードから、指定された IP [10.217.137.207] でデバイスから外部デバイスへのソケット接続を開こうとしているようです。

このコードは、テストしているデバイスの IP を使用する場合にのみ機能します。127.0.0.1 を使用してみてください

dataInputStream.readUTF();

IP [10.217.137.207] を持つデバイスから書き込まれている場合にのみ、何かを返します。

デバイスの IP アドレスを使用している場合

dataInputStream.readUTF();

あなたが書いたものすべてを返します

dataOutputStream.writeUTF()

私はそれが明確でなければならないと信じています。

于 2012-08-17T08:40:17.780 に答える