Jak przesyłać "dane" między dwoma urządzeniami (android,iphone)?

Jak mogę przesyłać dane między dwoma urządzeniami? Chciałbym przesyłać dane (głównie plik obrazu) pomiędzy różnymi platformami (android,iphone). Czy jest możliwość korzystania z p2p czy powinienem używać klient-serwer?

Każda pomoc będzie mile widziana.

Author: Parvin Gasimzade, 2012-05-02

5 answers

Chociaż p2p jest możliwe w niektórych przypadkach, można osiągnąć najbardziej rozpowszechnioną kompatybilność z architekturą klient-serwer, kosztem konieczności wdrożenia, zasilania, podłączenia i utrzymania serwerów.

    Będziesz mógł korzystać zarówno z punktów dostępowych wifi, jak i sieci mobilnych (3g itp.)]}
  • masz gotowe miejsce w systemie do pomiaru (lub ograniczenia) użytkowania i / lub wstawiania reklam
  • nie musisz się martwić o zapory blokujące połączenia przychodzące do urządzeń (wspólne na wifi, prawie zawsze w przypadku telefonu komórkowego)
  • względne lokalizacje urządzeń są nieistotne
  • Możesz współpracować nie tylko ze smartfonami i tabletami, ale także z tradycyjnymi komputerami i laptopami]}
 5
Author: Chris Stratton,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-05-07 06:35:13

Przejrzałeśbibliotekę Qualcomma AllJoyn ? Działa tylko przez Bluetooth lub wifi.

Poniższy kod jest skopiowany z tego włączając Programowanie gniazd do Twoich aplikacji

public class ServerActivity extends Activity {

    private TextView serverStatus;

    // default ip
    public static String SERVERIP = "10.0.2.15";

    // designate a port
    public static final int SERVERPORT = 8080;

    private Handler handler = new Handler();

    private ServerSocket serverSocket;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.server);
        serverStatus = (TextView) findViewById(R.id.server_status);

        SERVERIP = getLocalIpAddress();

        Thread fst = new Thread(new ServerThread());
        fst.start();
    }

    public class ServerThread implements Runnable {

        public void run() {
            try {
                if (SERVERIP != null) {
                    handler.post(new Runnable() {
                        @Override
                        public void run() {
                            serverStatus.setText("Listening on IP: " + SERVERIP);
                        }
                    });
                    serverSocket = new ServerSocket(SERVERPORT);
                    while (true) {
                        // listen for incoming clients
                        Socket client = serverSocket.accept();
                        handler.post(new Runnable() {
                            @Override
                            public void run() {
                                serverStatus.setText("Connected.");
                            }
                        });

                        try {
                            BufferedReader in = new BufferedReader(new InputStreamReader(client.getInputStream()));
                            String line = null;
                            while ((line = in.readLine()) != null) {
                                Log.d("ServerActivity", line);
                                handler.post(new Runnable() {
                                    @Override
                                    public void run() {
                                        // do whatever you want to the front end
                                        // this is where you can be creative
                                    }
                                });
                            }
                            break;
                        } catch (Exception e) {
                            handler.post(new Runnable() {
                                @Override
                                public void run() {
                                    serverStatus.setText("Oops. Connection interrupted. Please reconnect your phones.");
                                }
                            });
                            e.printStackTrace();
                        }
                    }
                } else {
                    handler.post(new Runnable() {
                        @Override
                        public void run() {
                            serverStatus.setText("Couldn't detect internet connection.");
                        }
                    });
                }
            } catch (Exception e) {
                handler.post(new Runnable() {
                    @Override
                    public void run() {
                        serverStatus.setText("Error");
                    }
                });
                e.printStackTrace();
            }
        }
    }

    // gets the ip address of your phone's network
    private String getLocalIpAddress() {
        try {
            for (Enumeration<NetworkInterface> en = NetworkInterface.getNetworkInterfaces(); en.hasMoreElements();) {
                NetworkInterface intf = en.nextElement();
                for (Enumeration<InetAddress> enumIpAddr = intf.getInetAddresses(); enumIpAddr.hasMoreElements();) {
                    InetAddress inetAddress = enumIpAddr.nextElement();
                    if (!inetAddress.isLoopbackAddress()) { return inetAddress.getHostAddress().toString(); }
                }
            }
        } catch (SocketException ex) {
            Log.e("ServerActivity", ex.toString());
        }
        return null;
    }

    @Override
    protected void onStop() {
        super.onStop();
        try {
             // make sure you close the socket upon exiting
             serverSocket.close();
         } catch (IOException e) {
             e.printStackTrace();
         }
    }

}
 13
Author: Shankar Agarwal,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-05-05 04:18:57

Jeśli nie masz nic przeciwko Bump, to zapewniają one API dla programistów i są dość proste w użyciu. Zobacz też

Aby zobaczyć na żywo demo transferu między iOS i Android @ youtube.

Szczegółowy fragment kodu i przykład w Github .

PS: nie należę do bu.mp :).

 6
Author: Futur,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-05-07 06:58:44

Użyłbym WebService. Ułatwia to utrzymanie usługi, ponieważ wdrożenie usługi jest niezależne od aplikacji.

Pro Webservice:

    W tym celu należy skontaktować się z Działem obsługi klienta.]}
  • modyfikacje w usłudze nie wpływają na APLIKACJĘ (nie są potrzebne aktualizacje na możliwe poprawki błędów)

Contra Webservice:

  • cały ruch przechodzi przez Twój Serwer
  • Aplikacja opiera się na Twoim serwerze

The you należy zadać sobie pytanie, ile danych jest przesyłane w komunikacji? Czy korzystanie z połączeń bezpośrednich przynosi realne korzyści?

 2
Author: Tarion,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-05-10 10:34:42

Możesz użyć filehub do przesyłania plików między IOS i Androidem.

Istnieje nowe urządzenie o nazwie fielhub na rynku może przesyłać zdjęcia / filmy/muzykę między urządzeniami z systemem iOS i Android lub między urządzeniami mobilnymi a kartą SD / USB HDD.. Myślę, że nazywa się RAVPower filehub.

 0
Author: Sunvalley Tec,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-07-12 08:23:22