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
PacketPeerUDPon mobile exports? -
Network security / local IP issues?
Any advice or suggestions would be really appreciated!