SDLNet UDP Open
Inhaltsverzeichnis
SDLNet_UDP_Open
Name
SDLNet_UDP_Open - Öffnet einen UDP-Socket
Delphi-Spezifikation
function SDLNet_UDP_Open(port : Uint16 ) : PUDPsocket;
Parameter
port | Dies ist die Port-Nummer (in normaler Byte-Reihenfolge) auf der UDP-Packete geschickt/empfangen werden. Die meisten Serveranwendungen werden einen bestimmten port verwenden wollen, sodass die Clients einfacher mit dem Server kommunizieren können. port kann allerdings auch 0 sein, dann wird ein gerade freier Port genommen, um die Verbindung zu öffnen. Dies eignet sich gut für Clients. |
---|
Beschreibung
Öffnet einen Socket um ihn danach für den UDP-Packettransfer zu verwenden. Wenn ein port-Wert übergeben wird, der nicht null ist, wird dieser verwendet, ansonsten wird die Port-Nummer automatisch festgelegt. Anders als TCP-Sockets brauchen UDP-Sockets keine Remote-IP, da UDP niemals wirklich mit einem Server Verbunden ist, sondern immer nur Packete an ihn schickt, ohne zu wissen, ob er wirklich da ist.
Dieser Socket kann Senden und Empfangen sofort nach diesem einfachen Erstellen.
Rückgabewert
Der Rückgabewert ist ein gültiger PUDPsocket bei Erfolg. Bei Fehlern wird nil zurückgegeben, beispielsweise wenn kein Socket erstellt werden konnte, weil der Port nicht wie gewünscht reserviert werden konnte und ein nicht-0 Wert übergeben wurde.
Beispiel
Hinweis: Unten wird der Socket, der einen spezifischen Port alloziert Server genannt, allerdings können natürlich auch Clients einen spezifischen Port reservieren, allerdings ist dies eigentlich garnicht nötig, da der Server auch so den Port abfragen kann, indem es ihn aus den Packetquelleninformationen ausliest und der Client normalerweise die Kommunikation eröffnet.
Server:
// Einen UDP-Socket auf Port 6666 eröffnen (Server) var udpsock: PUDPSocket; begin udpsock := SDLNet_UDP_Open(6666); if (udpsock = nil) begin WriteLn('SDLNet_UDP_Open: ', SDLNet_GetError()); Exit; end; // Macht was mit dem Socket und gibt den Speicher frei ;) end.
Client:
// Erstellt einen UDPsocket auf irgendeinem freien Port (Client) var udpsock: PUDPSocket; begin udpsock := SDLNet_UDP_Open(0); if (udpsock = nil) begin WriteLn('SDLNet_UDP_Open: ', SDLNet_GetError()); Exit; end; // Macht was mit dem Socket und gibt den Speicher frei ;) end;