SDLNet UDP Open: Unterschied zwischen den Versionen

Aus DGL Wiki
Wechseln zu: Navigation, Suche
Zeile 14: Zeile 14:
 
{| border="1" rules="all"
 
{| border="1" rules="all"
 
! ''port''  
 
! ''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.
+
| 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.
 
|}
 
|}
  
  
 
== Beschreibung ==  
 
== 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.
+
Ö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 sofort nach diesem einfachen Erstellen.
 
Dieser Socket kann Senden und Empfangen sofort nach diesem einfachen Erstellen.
 +
 +
 +
== 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.
  
  
Zeile 29: Zeile 33:
  
 
== Beispiel ==
 
== 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.
+
Fester Port:  
 
 
Server:  
 
 
<pascal>
 
<pascal>
 
// Einen UDP-Socket auf Port 6666 eröffnen (Server)
 
// Einen UDP-Socket auf Port 6666 eröffnen (Server)
Zeile 47: Zeile 49:
 
</pascal>
 
</pascal>
  
Client:
+
Variabler Port:
 
<pascal>
 
<pascal>
 
// Erstellt einen UDPsocket auf irgendeinem freien Port (Client)
 
// Erstellt einen UDPsocket auf irgendeinem freien Port (Client)
Zeile 66: Zeile 68:
 
== Siehe auch ==
 
== Siehe auch ==
 
[[SDLNet_UDP_Close]], [[UDPSocket]]
 
[[SDLNet_UDP_Close]], [[UDPSocket]]
 +
 +
[http://de.wikipedia.org/wiki/Byte-Reihenfolge Byte-Reihenfolge bei Wikipedia]
  
 
[[Kategorie:SDLNET|UDP_Open]]
 
[[Kategorie:SDLNET|UDP_Open]]

Version vom 21. April 2007, 12:31 Uhr

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.


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 Senden und Empfangen sofort nach diesem einfachen Erstellen.


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;


Siehe auch

SDLNet_UDP_Close, UDPSocket

Byte-Reihenfolge bei Wikipedia