Funzione per ricevere un messaggio UDP con la possibilità di sapere la porta e l'indirizzo IP del mittente.
La funzione può essere usata per comunicazioni sia da parte del client sia da parte del server. In particolare, il server utilizza le informazioni di rPort e rIp restituite da questa funzione per mandare un'eventuale risposta alla stazione client tramite la udp_send_to().
Sintassi |
i32 udp_recv_from (i32 idx, buff, i32 buffLen, u32 rPort, u32 rIp) |
||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|
idx |
Numero dell'handler della comunicazione UDP. |
||||||||||
buff |
Buffer generico destinato a contenente il pacchetto dati ricevuto. Può essere una variabile string, una struct_p (struttura packed) oppure un array di struct_p. Nel caso di struct_p, la variabile deve essere dichiarata globale. |
||||||||||
buffLen |
Numero di byte massimo da ricevere. |
||||||||||
rPort |
Numero della porta remota da cui sono stati ricevuti i dati (il suo contenuto viene scritto da questa funzione). |
||||||||||
rIp |
Indirizzo IP remoto da cui sono stati ricevuti i dati (il suo contenuto viene scritto da questa funzione, non è necessario specificarlo prima della chiamata). |
||||||||||
Risultato |
Rende:
Per vedere più nello specifico alcuni errori resi, vedi Tabella errori resi. |
||||||||||
Validità |
Rule, Task. |
||||||||||
Note |
In testa al buffer di ricezione dati deve essere sempre riservato il posto per un u32, che contiene l'identificatore msgId. Questo identificatore deve essere ritrasmesso senza modifiche (tramite la funzione udp_send_to()) in testa al buffer che contiene la risposta. In assenza di questo identificatore, un client che utilizza le funzioni udp_send_notify() e udp_recv_notify() non sarà in grado di identificare la risposta come corretta. |
Per un esempio concreto vedi in ambiente RDE: Workspace -> Speciali -> Libreria degli esempi.