запись DataOutputStream в Android - PullRequest
0 голосов
/ 18 марта 2011

Я пытаюсь настроить сокет-клиент для отправки только int на данный момент с DataOutputStream на сервер.Мое приложение работает нормально, когда я запускаю его со своего ПК, но я получаю сообщение об ошибке в эмуляторе Android на Eclipse: «Приложение SOCKET неожиданно остановилось, пожалуйста, повторите попытку».Какие-нибудь советы?Если вы обнаружите какие-либо другие ошибки, почему это не сработает, в общем, приветствуются любые советы.

Код приложения для Android:

import java.io.*;  
import java.net.*;  
import android.app.Activity;  
import android.os.Bundle;  
import android.widget.TextView;

public class SOCKET extends Activity {

    @Override
    public void onCreate(Bundle savedInstanceState){

        super.onCreate(savedInstanceState);
        TextView tv = new TextView(this);
        tv.setText("App1 Test");
        setContentView(tv);
        Client app1Test = new Client();
        app1Test.run();
    }

    public class Client implements Runnable{

        @Override
        public void run() {
            int message = 13;
            Socket App1 = null;

                   try {
                     App1 = new Socket("xxxxx.dyndns-remote.com", ####);
                } catch (UnknownHostException e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                } catch (IOException e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                }

            DataOutputStream output = null;

            try {
                output = new DataOutputStream(App1.getOutputStream());
            } catch (IOException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }


            try {
                output.write(message);
                output.close(); 
                App1.close();
            } catch (IOException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
        }
    }
}
}

Ответы [ 2 ]

0 голосов
/ 15 сентября 2017

Использовать массив байтов для отправки данных.

byte buf [] = message.getBytes ();
output.write(buf);

Салудос.

0 голосов
/ 18 марта 2011

Установите разрешение на доступ в Интернет в своем манифесте

<uses-permission android:name="android.permission.INTERNET" />

, чтобы разрешить вашему приложению открывать сокеты.См http://developer.android.com/reference/android/Manifest.permission.html и http://developer.android.com/resources/samples/SampleSyncAdapter/AndroidManifest.html.

...