2012-05-02 6 views
10

मैं दो डिवाइस के बीच डेटा कैसे स्थानांतरित कर सकता हूं? मैं विभिन्न प्लेटफार्मों (एंड्रॉइड, आईफोन) के बीच डेटा (ज्यादातर छवि फ़ाइल) स्थानांतरित करना चाहता हूं। क्या पी 2 पी का उपयोग करना संभव है या क्या मुझे क्लाइंट-सर्वर का उपयोग करना चाहिए?दो डिवाइस (एंड्रॉइड, आईफोन) के बीच "डेटा" को कैसे स्थानांतरित करें?

किसी भी मदद की सराहना की जाएगी।

+0

एंड्रॉइड 2 एंड्रॉइड बीटीचैट डेमो के लिए संभव है। लेकिन आईफोन में बीटी इस उपयोग के लिए डिज़ाइन नहीं किया गया है। –

+0

आप इस तरह के स्थानांतरण पर क्या तंत्र करना चाहते हैं? ब्लू टूथ, वाईफ़ाई, इंटरनेट - उपरोक्त में से कोई भी? – halfer

+0

मैं 3 जी या वाईफ़ाई का उपयोग कर इंटरनेट पर डेटा स्थानांतरित करना चाहता हूं। –

उत्तर

5

जबकि p2p संभव है से नकल कर रहा है कुछ मामलों में, आप एक क्लाइंट-सर्वर वास्तुकला के साथ सबसे व्यापक अनुकूलता प्राप्त होगा तैनात करने के लिए, बिजली होने की कीमत पर, , कनेक्ट, और सर्वर बनाए रखने।

  • आप दोनों WiFi पहुंच बिंदुओं और मोबाइल (3 जी, आदि) नेटवर्क
  • आप को मापने के लिए (या प्रतिबंधित) उपयोग और/या विज्ञापन डालने प्रणाली में एक तैयार जगह नहीं है का उपयोग करने के लिए सक्षम हो जाएगा
  • आप उपकरणों के लिए भीतर का कनेक्शन अवरुद्ध फायरवॉल के बारे में (लगभग हमेशा मोबाइल पर मामले वाईफ़ाई पर आम)
  • उपकरणों के सापेक्ष स्थानों अप्रासंगिक हैं चिंता करने की ज़रूरत नहीं है
  • आप स्मार्टफ़ोन और टैबलेट न केवल interoperate कर सकते हैं, लेकिन पारंपरिक पीसी और लैपटॉप
  • के साथ
+0

पी 2 पी और क्लाइंट-सर्वर के प्रदर्शन के बारे में क्या? किसके पास बेहतर प्रदर्शन है? –

+1

प्रदर्शन शून्य है यदि विचारों में से कोई एक ऐसी स्थितियों में काम नहीं करेगा जहां इसकी आवश्यकता है। जहां दोनों विचार काम करेंगे, आप दोनों का समर्थन कर सकते हैं। –

13

क्या आपने Qualcomm's AllJoyn library पर देखा है? यह केवल ब्लूटूथ या वाईफाई पर काम करता है।

नीचे कोड इस Incorporating Socket Programming into your Applications

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(); 
     } 
    } 

} 
6

यदि आप Bump के साथ ठीक हैं, तो वे डेवलपर्स के उपयोग के लिए एक एपीआई प्रदान करते हैं और इसका उपयोग करने में बहुत आसान है। Check this out.

आईओएस और एंड्रॉइड @youtube के बीच स्थानांतरित करने का एक लाइव डेमो देखने के लिए।

विस्तृत कोड स्निपेट और उदाहरण Github में।

पीएस: मैं bu.mp से संबंधित नहीं हूं :)।

+0

आपके उत्तर के लिए धन्यवाद। मुझे टक्कर पता है लेकिन मैं इसका उपयोग नहीं करना चाहता हूं। मैं यह समझने की कोशिश कर रहा हूं कि यह कैसे काम कर रहा है। –

+0

उच्च स्तर का विचार: http://bu.mp/faq – Futur

2

मैं एक वेब सेवा का उपयोग करूंगा। इससे आपकी सेवा को बनाए रखना आसान हो जाता है, क्योंकि सेवा कार्यान्वयन आपके ऐप से स्वतंत्र है।

प्रो वेब सेवा:

एक पूर्व DNS कॉन्फ़िगर किया गया तहत
  • पहुंच योग्य
  • सेवा अनुप्रयोग (कोई अद्यतन संभव bugfixes पर जरूरत)

कॉन्ट्रा वेब सेवा को प्रभावित नहीं करते पर

  • संशोधन:

    • सभी ट्रैफ़िक आपके सर्वर
    • के माध्यम से जाता है
    • आवेदन अपने सर्वर

    , जिसे आप अपने आप को सवाल है, कितना डेटा अपने संचार में स्थानांतरित कर रहा है पूछना चाहिए पर निर्भर करता है? क्या प्रत्यक्ष कनेक्शन का उपयोग करने का वास्तविक लाभ है?

  • 0

    आप आईओएस और एंड्रॉइड के बीच फ़ाइलों को स्थानांतरित करने के लिए फ़ाइलशब का उपयोग कर सकते हैं।

    बाजार पर फ़िलहब नामक एक नया डिवाइस आईओएस और एंड्रॉइड डिवाइसों के बीच या मोबाइल डिवाइस और एसडी कार्ड/यूएसबी एचडीडी के बीच फोटो/फिल्में/संगीत स्थानांतरित कर सकता है .. मुझे लगता है कि इसे रैवॉवर फ़ाइलहब कहा जाता है।

    संबंधित मुद्दे