Funzione per l'apertura di una comunicazione UDP di tipo server.
Il server rimane in ascolto di messaggi provenienti da diverse stazioni ed eventualmente risponde a ciascuna di esse. L'ascolto avviene sulla porta locale specificata da nPort e può essere limitato all'interfaccia locale specificata da nAddr oppure esteso a tutte le interfacce locali.
|
i32 udp_open_server (u32 nPort [, i32 nAddr=ALL])
|
|
Numero della porta (locale) sulla quale il server è in ascolto.
|
|
Indirizzo IP (locale) dell'interfaccia sulla quale il server è in ascolto. (opzionale, default tutte le interfacce locali)
|
|
Rende:
|
|
0-:-99
|
Operazione eseguita con successo. Viene reso l'ID della comunicazione.
|
-1
|
nPort illegale.
|
-3
|
Tutte le entry della tabella connessioni del task sono già impegnate, impossibile stabilire una nuova connessione (max 10 connessioni).
|
-1000 -:- -2000
|
Apertura socket fallita: rende il codice fornito dalla funzione di S.O. socket(), con offset 1000.
|
-2000 -:- -3000
|
Funzione di S.O. bind() fallita: rende il codice fornito dalla bind(), con offset 2000.
|
Per vedere più nello specifico alcuni errori resi, vedi Tabella errori resi.
|
|
Rule, Task.
|
|
Se il risultato è negativo non deve essere utilizzato nelle altre funzioni di gestione della comunicazione UDP.
|
Per un esempio concreto vedi in ambiente RDE: Workspace -> Speciali -> Libreria degli esempi.
|
|
-1013
|
[EACCES] Permesso per la creazione del socket del tipo e del protocollo specificato negato.
|
-1023
|
[ENFILE] La tabella di file di sistema è piena.
|
-1024
|
[EMFILE] La tabella di descrizione pre-process è piena.
|
-1091
|
[EPROTOTYPE] Il tipo di socket non è supportato dal protocollo.
|
-1093
|
[EPROTONOSUPPORT] La famiglia di protocollo non è supportata oppure il protocollo stesso non è supportato.
|
-1097
|
[EAFNOSUPPORT] Il dominio non è supportato.
|
-1105
|
[ENOBUFS] Spazio buffer insufficiente.
|
-2002
|
[ENOENT] Il socket non esiste.
|
-2004
|
[EINTR] Il tentativo di connessione è stato interrotto.
|
-2009
|
[EBADF] Id non valido.
|
-2013
|
[EACCES] Si è tentato di eseguire una connessione ad un indirizzo broadcast senza che il socket fosse stato abilitato per il broadcast.
|
-2014
|
[EFAULT] Ha un indirizzo non valido.
|
-2022
|
[EINVAL] Indirizzo socket fuori dal range ammesso.
|
-2040
|
[ELOOP] Troppi link simbolici incontrati durante la traduzione del percorso.
|
-2088
|
[ENOTSOCK] Id non valido, non si riferisce ad un socket.
|
-2097
|
[EAFNOSUPPORT] L'indirizzo non ha una famiglia valida di indirizzi corretta nel relativo campo.
|
-2098
|
[EADDRINUSE] Un altro socket è già in ascolto sulla stessa porta.
|
-2101
|
[ENETUNREACH] La rete non è raggiungibile.
|
-2106
|
[EISCONN] Il socket è già connesso.
|
-2110
|
[ETIMEDOUT] Si è avuto timeout durante il tentativo di connessione. Su richiesta di SYN (n tentativi ogni x secondi) non si è avuto risposta (server occupato).
|
-2111
|
[ECONNREFUSED] Non c'è nessuno in ascolto sull'indirizzo remoto (su richiesta di SYN il client ha ricevuto un RST inciato direttamente dalla gestione TCP del server quando qualcosa non va) oppure il server ha raggiunto il numero di connessioni massime possibili.
|
-2114
|
[EALREADY] Il socket non è bloccante e un tentativo precedente di connessione non si è ancora concluso.
|
-2115
|
[EINPROGRESS] Il socket non è bloccante e la connessione non può essere conclusa immediatamente.
|
NOTA: Per la tabella completa dei codici errore vedi Codici di errore funzioni tenendo conto dell'offset.
|