Premesso che é la prima volta che provo il socket UDP. Raccogliendo un ispirazione da un POST di Erel che parla di un server MQTT che invia l'indirizzo IP con un ping nella rete con protocollo UDP.
Ho cercato di implementare un service che ogni 30 secondi invia un PING alla rete con l'indirizzo del server, in modo che i client si possano agganciare. Cosa ho sbagliato?
N.B. GetBroadcastAddress l'ha postato Erel in un suo Post io ho solo ricopiato, quindi sarà corretto, e serve a trovare l'indirizzo BroadCasting della rete.
	
	
	
	
	
	
	
		
			
			
			
			
			
		
	
	
	
		
	
	
		
	
			
			Ho cercato di implementare un service che ogni 30 secondi invia un PING alla rete con l'indirizzo del server, in modo che i client si possano agganciare. Cosa ho sbagliato?
N.B. GetBroadcastAddress l'ha postato Erel in un suo Post io ho solo ricopiato, quindi sarà corretto, e serve a trovare l'indirizzo BroadCasting della rete.
			
				B4X:
			
		
		
		Sub Process_Globals
    'These global variables will be declared once when the application starts.
    'These variables can be accessed from all modules.
    Dim PingServer As UDPSocket
    Dim IP As ServerSocket
  
End Sub
Sub Service_Create
    PingServer.Initialize("PingServer",1010,200)
    IP.Initialize(1010, "IP")
End Sub
Sub Service_Start (StartingIntent As Intent)
    Dim Packet As UDPPacket
    Packet.Initialize(IP.GetMyWifiIP.GetBytes("UTF8"), GetBroadcastAddress, 1010)
    PingServer.Send(Packet)
End Sub
Sub Service_Destroy
    StartServiceAt(Me,DateTime.Now+DateTime.TicksPerSecond*30,False)
End Sub
Sub UDP_PacketArrived (Packet As UDPPacket)
    Log(BytesToString(Packet.Data,0,Packet.Data.Length,"UTF-8"))
End Sub
Sub GetBroadcastAddress As String
    Dim niIterator As JavaObject
    niIterator = niIterator.InitializeStatic("java.net.NetworkInterface").RunMethod("getNetworkInterfaces", Null)
    Do While niIterator.RunMethod("hasMoreElements", Null)
        Dim ni As JavaObject = niIterator.RunMethod("nextElement", Null)
        If ni.RunMethod("isLoopback", Null) = False Then
            Dim addresses As List = ni.RunMethod("getInterfaceAddresses", Null)
            For Each ia As JavaObject In addresses
                Dim broadcast As Object = ia.RunMethod("getBroadcast", Null)
                If broadcast <> Null Then
                    Dim b As String = broadcast
                    Return b.SubString(1)
                End If
            Next
        End If
    Loop
    Return ""
End Sub 
				 
 
		 
 
		 
 
		 
 
		 
 
		 
 
		