Title: UDP Works on Desktop but Fails on Android Export

Hi everyone,

I’m running into a problem where my Godot project connects to my UDP server perfectly on desktop, but when I export it to Android, it fails to connect. I’ve checked all the necessary permissions (INTERNET, etc.), and even tried pinging the server from Termux on the device, which works fine. So I’m not sure why my app itself isn’t connecting.

Here’s the relevant part of my code:

extends Control

var udp := PacketPeerUDP.new()
var serverIP := "192.168.1.18"
var serverPort := 9999
var server_connected := false

@onready var infoLabel: Label = $Label

func _ready() -> void:
    var err := udp.bind(0) # auto-assign local port
    if err != OK:
        infoLabel.text = "UDP bind failed ❌"
        return
    udp.set_broadcast_enabled(true)
    udp.set_dest_address(serverIP, serverPort)
    set_process(true)

func _process(delta: float) -> void:
    while udp.get_available_packet_count() > 0:
        var msg := udp.get_packet().get_string_from_utf8()
        if msg == "PONG":
            server_connected = true
            infoLabel.text = "Server Connected ✅"

    udp.put_packet("PING".to_utf8_buffer())

What I’ve tried:

  • Verified Android manifest permissions (INTERNET, ACCESS_NETWORK_STATE,etc).

  • Checked that I can ping the server from the Android device using Termux.

  • Tried different ports and IP addresses.

Question:

Why does this work on desktop but not on Android? Could it be related to:

  • Android restricting UDP traffic in some way?

  • Something with PacketPeerUDP on mobile exports?

  • Network security / local IP issues?

Any advice or suggestions would be really appreciated!