SDLNet UDP Open: Unterschied zwischen den Versionen
DGLBot (Diskussion | Beiträge) K (Der Ausdruck ''<pascal>(.*?)</pascal>'' wurde ersetzt mit ''<source lang="pascal">$1</source>''.) |
|||
(Eine dazwischenliegende Version von einem anderen Benutzer wird nicht angezeigt) | |||
Zeile 7: | Zeile 7: | ||
== Delphi-Spezifikation == | == Delphi-Spezifikation == | ||
− | function '''SDLNet_UDP_Open'''(''port'' : Uint16 ) : PUDPsocket; | + | function '''SDLNet_UDP_Open'''(''port'' : Uint16) : PUDPsocket; |
Zeile 14: | Zeile 14: | ||
{| border="1" rules="all" | {| border="1" rules="all" | ||
! ''port'' | ! ''port'' | ||
− | | Dies ist die Port-Nummer (in normaler Byte-Reihenfolge | + | | Dies ist die Port-Nummer (in normaler Byte-Reihenfolge was heißt, dass man eine normale Zahl übergeben kann (z.B. 357) ohne dass man vorher noch die Byte-Reihenfolge ändern müsste) 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. |
|} | |} | ||
== Beschreibung == | == Beschreibung == | ||
− | Öffnet einen Socket um ihn danach für den UDP-Packettransfer zu verwenden. Anders als TCP-Sockets brauchen UDP-Sockets keine Remote-IP, da UDP niemals wirklich mit einem Server | + | Öffnet einen Socket um ihn danach für den UDP-Packettransfer zu verwenden. 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 | + | Dieser Socket kann direkt nach dem Erstellen Senden und Empfangen. |
Zeile 33: | Zeile 33: | ||
== Beispiel == | == Beispiel == | ||
Fester Port: | Fester Port: | ||
− | <pascal> | + | <source lang="pascal"> |
// Einen UDP-Socket auf Port 6666 eröffnen (Server) | // Einen UDP-Socket auf Port 6666 eröffnen (Server) | ||
var | var | ||
Zeile 46: | Zeile 46: | ||
// Macht was mit dem Socket und gibt den Speicher frei ;) | // Macht was mit dem Socket und gibt den Speicher frei ;) | ||
end. | end. | ||
− | </ | + | </source> |
Variabler Port: | Variabler Port: | ||
− | <pascal> | + | <source lang="pascal"> |
// Erstellt einen UDPsocket auf irgendeinem freien Port (Client) | // Erstellt einen UDPsocket auf irgendeinem freien Port (Client) | ||
var | var | ||
Zeile 62: | Zeile 62: | ||
// Macht was mit dem Socket und gibt den Speicher frei ;) | // Macht was mit dem Socket und gibt den Speicher frei ;) | ||
end; | end; | ||
− | </ | + | </source> |
Aktuelle Version vom 10. März 2009, 19:07 Uhr
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 was heißt, dass man eine normale Zahl übergeben kann (z.B. 357) ohne dass man vorher noch die Byte-Reihenfolge ändern müsste) 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. |
---|
Beschreibung
Öffnet einen Socket um ihn danach für den UDP-Packettransfer zu verwenden. 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 direkt nach dem Erstellen Senden und Empfangen.
Hinweis
Wird bei port 0 übergeben, so sucht sich SDLNet automatisch einen freien Port aus. Dieses Verhalten ist für Clients praktisch, bei Servern allerdings eher unerwünscht. Für Clients ist es deswegen vorteilhaft, weil ein Client eigentlich keinen speziellen Port braucht, weil der Server den Port sowieso aus den Paketinformationen auslesen kann und der Client normalerweise die Kommunikation eröffnet.
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
Fester Port:
// 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.
Variabler Port:
// 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;