Sending UDP packages from ANDROID 2.2 (HTC desire)

12,355

I was having a very similar problem. My solution was to add:

uses-permission android:name="android.permission.INTERNET"
uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"
uses-permission android:name="android.permission.CHANGE_WIFI_MULTICAST_STATE"

to the Manifest.xml file. Then I disabled all Windows firewall and it worked. I was able to send a String from my Droid to a PC.

Share:
12,355
Admin
Author by

Admin

Updated on June 04, 2022

Comments

  • Admin
    Admin almost 2 years

    i have a lan and i want to send a upd message from my android (htc desire) to my PC. Theres a Wlan Router between them. The Problem is, that the UPD message never gets to the PC.

    Code on the Android.:

    package org.example.androidapp;
    
    import java.net.DatagramPacket;
    import java.net.DatagramSocket;
    import java.net.InetAddress;
    
    public class UDPClientAnd {
    
        public void sendUDPMessage(int port) throws java.io.IOException {
            DatagramSocket socket = new DatagramSocket();
            InetAddress serverIP = InetAddress.getByName("192.168.1.110");
            byte[] outData = ("Ping").getBytes();
            DatagramPacket out = new DatagramPacket(outData,outData.length, serverIP,50005);
            socket.send(out);
            socket.close();
        }
    
    }
    

    I choose a high port on booth sides.

    The Permissions on the Android are:

    uses-permission android:name="android.permission.INTERNET"
    uses-permission android:name="android.permission.CHANGE_WIFI_MULTICAST_STATE" 
    

    The Server-Side is the PC just a simple programm for receiving:

    package org.example.androidapp;
    
    import java.io.IOException;
    import java.net.DatagramPacket;
    import java.net.DatagramSocket;
    import java.net.InetAddress;
    import java.net.SocketException;
    
    public class UPDServerAnd implements Runnable{
    public void run(){
    byte[] inData = new byte[48];
    byte[] outData = new byte[48];
    String message;
    DatagramSocket socket;
    try {
        socket = new DatagramSocket(50005);
        while (true) {
            DatagramPacket in = new DatagramPacket(inData,inData.length);
            socket.receive(in);
            InetAddress senderIP = in.getAddress();
            int senderPort = in.getPort();
            message=new String(in.getData(),0,in.getLength());
            System.out.println("Got "+message+" from "+senderIP+","+senderPort);
            outData = "Pong".getBytes();
            DatagramPacket out = new DatagramPacket(outData,outData.length, senderIP,senderPort);
            socket.send(out);
            }
    } catch (SocketException e) {
        e.printStackTrace();
    } 
     catch (IOException e) {
        e.printStackTrace();
    }
    
    }
    
    }
    

    So why is there no UDP Package visible coming from android? Even Wireshark only shows some ARP packages. Plz help :)