2013-04-04 6 views
8

मैं मोबाइल से यूडीपी मल्टीकास्ट पैकेट भेजने के लिए एंड्रॉइड एप्लिकेशन बना रहा हूं।यूडीपी मल्टीकास्टिंग मोबाइल से पीसी

यह मेरा मोबाइल अनुप्रयोग के लिए कोड है:

यह AndroidManifest.xml

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

DeviceManagerWindow.java

import android.net.wifi.WifiManager; 
import android.os.Bundle; 
import android.app.Activity; 
import android.content.Context; 
import android.view.Menu; 

public class DeviceManagerWindow extends Activity { 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_device_manager_window); 
     WifiManager wifi = (WifiManager)getSystemService(Context.WIFI_SERVICE); 
     if(wifi != null) 
     { 
      WifiManager.MulticastLock lock = wifi.createMulticastLock("WifiDevices"); 
      lock.acquire(); 
     } 
     Thread sendMulticast = new Thread(new MultiCastThread()); 
     sendMulticast.start(); 
    } 

    @Override 
    public boolean onCreateOptionsMenu(Menu menu) { 
     // Inflate the menu; this adds items to the action bar if it is present. 
     getMenuInflater().inflate(R.menu.device_manager_window, menu); 
     return true; 
    } 

} 

इस फ़ाइल में उपयोगकर्ता की अनुमति है भेजता बहुस्त्र्पीय पैकेट:

,210

MultiCastThread.java

public class MultiCastThread implements Runnable 
{ 
    MulticastSocket s; 
    DatagramPacket pack; 
    public MultiCastThread() 
    { 
     try 
     { 
      s = new MulticastSocket(WifiConstants.PORT_NO); 
      s.joinGroup(InetAddress.getByName(WifiConstants.GROUP_ADDR)); 
     } 
     catch(Exception e) 
     { 
      Log.v("Socket Error: ",e.getMessage()); 
     } 
    } 
    @Override 
    public void run() 
    { 
     try 
     { 
      pack = new DatagramPacket(WifiConstants.WHO_IS.getBytes(),WifiConstants.WHO_IS.getBytes().length, InetAddress.getByName(WifiConstants.GROUP_ADDR), WifiConstants.PORT_NO); 
      s.setTimeToLive(WifiConstants.TIME_TO_LIVE); 
      s.send(pack); 
     } 
     catch(Exception e) 
     { 
      Log.v("Packet Sending Error: ",e.getMessage()); 
     } 
    } 
} 

WifiConstants.java

इस फ़ाइल में वाईफ़ाई इंटरेक्शन के लिए स्थिरांक का रिकॉर्ड रखता है।

public class WifiConstants 
{ 
    public static final int PORT_NO = 5432; 
    public static final String GROUP_ADDR = "225.4.5.6"; 
    public static final int DGRAM_LEN = 1024; 
    public static final String WHO_IS = "Who is?"; 
    public static final int TIME_TO_LIVE = 1; 
} 

मेरे सिस्टम पर मैं पैकेट प्राप्त करने और कंसोल में प्रिंट करने के लिए जावा कोड चला रहा हूं।

ListenerDevice.java

package Receiver; 

import java.net.DatagramPacket; 
import java.net.InetAddress; 
import java.net.MulticastSocket; 


public class ListenerDevice 
{ 
    public static final int PORT_NO = 5432; 
    public static final String GROUP_ADDR = "225.4.5.6"; 
    public static final int DGRAM_LEN = 1024; 
    public static final String WHO_IS = "Who is?"; 
    public static final int TIME_TO_LIVE = 1; 
    public static void main(String[] args) 
    { 
     MulticastSocket socket = null; 
     DatagramPacket inPacket = null; 
     byte[] inBuf = new byte[DGRAM_LEN]; 
     try 
     { 
      //Prepare to join multicast group 
      socket = new MulticastSocket(PORT_NO); 
      InetAddress address = InetAddress.getByName(GROUP_ADDR); 
      socket.joinGroup(address); 

       while(true) 
       { 
        System.out.println("Listening"); 
        inPacket = new DatagramPacket(inBuf, inBuf.length); 
        socket.receive(inPacket); 
        String msg = new String(inBuf, 0, inPacket.getLength()); 
        System.out.println("From :" + inPacket.getAddress() + " Msg : " + msg); 
       } 
     } 
     catch(Exception ioe) 
     { 
      System.out.println(ioe); 
     } 
     } 
} 

मैं नहीं जानता कि क्या गलत मैं किसी भी उत्पादन नहीं मिल रहा है है। कृपया मदद करें। मैंने कई ट्यूटोरियल देखा और उन्होंने कहा कि प्रत्येक चरण का पालन किया।

उत्तर

2

दोनों डिवाइसों को उसी नेटवर्क से कनेक्ट किया जाना चाहिए। चूंकि आप एमुलेटर से पीसी तक पैकेट भेज रहे हैं, यह उसी सिस्टम पर रहता है। इसलिए, आप इसके साथ किसी भी समस्या का सामना नहीं कर रहे हैं। लेकिन जैसे ही आप पीसी से डेटा डिवाइस को मोबाइल डिवाइस पर भेज देंगे, दोनों डिवाइसों को एक ही नेटवर्क साझा करना चाहिए।

यह कुशल होगा यदि दोनों डिवाइस unfirewalled नेटवर्क से जुड़े हैं। क्योंकि फ़ायरवॉल डेटा पैकेट भेजने में परेशानी पैदा कर सकता है।

यह निष्कर्ष है कि मैं आया था।

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