Difference between revisions of "lua-enet (Français)"
(→Fonctions) |
(→Exemples) |
||
Line 90: | Line 90: | ||
event = host:service() | event = host:service() | ||
end | end | ||
+ | end | ||
+ | </source> | ||
+ | |||
+ | Ceci est un autre exemple qui crée un serveur (récepteur) et un client (émetteur) sur le même ordinateur, avec le même script. Le client va dire « Hi » au serveur à l'infini car ClientSend() est appelé à l'intérieur de la fonction love.update. | ||
+ | |||
+ | <source lang="Lua"> | ||
+ | enet = require "enet" | ||
+ | |||
+ | enethost = nil | ||
+ | hostevent = nil | ||
+ | clientpeer = nil | ||
+ | |||
+ | function love.load(args) | ||
+ | |||
+ | -- Ouvre une connexion hôte afin de recevoir des messages | ||
+ | enethost = enet.host_create("localhost:6750") | ||
+ | |||
+ | -- Établit une connexion à cet hôte sur le même ordinateur | ||
+ | enetclient = enet.host_create() | ||
+ | clientpeer = enetclient:connect("localhost:6750") | ||
+ | |||
+ | end | ||
+ | |||
+ | function love.update(dt) | ||
+ | ServerListen() | ||
+ | ClientSend() | ||
+ | end | ||
+ | |||
+ | function love.draw() | ||
+ | end | ||
+ | |||
+ | function ServerListen() | ||
+ | |||
+ | hostevent = enethost:service(100) | ||
+ | |||
+ | if hostevent then | ||
+ | print("Server detected message type: " .. hostevent.type) | ||
+ | if hostevent.type == "connect" then | ||
+ | print(hostevent.peer, "connected.") | ||
+ | end | ||
+ | if hostevent.type == "receive" then | ||
+ | print("Received message: ", hostevent.data, hostevent.peer) | ||
+ | end | ||
+ | end | ||
+ | end | ||
+ | |||
+ | function ClientSend() | ||
+ | enetclient:service(100) | ||
+ | clientpeer:send("Hi") | ||
end | end | ||
</source> | </source> |
Latest revision as of 20:30, 6 March 2022
Disponible depuis LÖVE 0.9.0 |
Ce-tte module n'est pas supporté-e par des versions plus anciennes. |
La documentation officielle de lua-enet est disponible ici. Les fonctionnalités d'ENet sont listées sur sa page web. La documentation officielle pourrait contenir quelques fautes de frappe. La documentation de ce wiki reflète son implémentation dans Löve, cela signifie qu'il peut être considéré comme sûr de suivre ce qui est écrit ici. |
lua-enet consiste en quelques bindings en Lua d'ENet.
Le but d'ENet est de fournir une couche de communication réseau relativement finne, simple et robuste pour les jeux basée sur UDP (User Datagram Protocol). La fonctionnalité première qu'il fournit est une délivrance de paquets (réseau) optionnellement fiable, et dans l'ordre.
ENet omet certaines fonctionnalités réseau de plus haut niveau telles que l'authentification, le lobbying, la découverte de serveurs, le chiffrement, ou les tâches similaires qui sont très spécifiques aux applications, cela permet à la bibliothèque de rester flexible, portable, et facilement embarquable.
Types
Type | Description |
---|---|
host | Un hôte ENet pour communiquer avec les pairs. |
peer | Un pair ENet avec lequel les paquets de données peuvent être envoyé ou reçu. |
event | Une simple table contenant les informations d'un événement. |
Fonctions
Fonction | Description |
---|---|
host_create | Retourne un nouvel hôte. |
linked_version | Retourne la chaîne de la version d'ENet incluse. |
enet.host create (Français) | Retourne un nouvel host (hôte) | ||
enet.host:broadcast (Français) | Met en file d'attente un paquet à envoyer à tous les pairs connectés. | ||
enet.host:channel limit (Français) | Règle le nombre maximum de canaux alloués. | ||
enet.host:check events (Français) | Vérifie tous les évènements en file d'attente et en distribue un si disponible. | ||
enet.host:compress with range coder (Français) | Commute un codage d'ingervalle, PPM adaptatif d'ordre 2, pour les transmissions des données à tous les pairs. | ||
enet.host:connect (Français) | Connecte un hôte à un autre hôte distant | ||
enet.host:destroy (Français) | Détruit la structure de l'hôte et ferme toutes ses connexions. | ||
enet.host:flush (Français) | Envoie tous les paquets en file d'attente. | ||
enet.host:get peer (Français) | Retourne le pair connecté à l'index spécifié (commence à 1). | ||
enet.host:get socket address (Français) | Retourne une chaîne de caractères décrivant l'adresse du socket de l'hôte donné. | ||
enet.host:service (Français) | Attend que des event (évènements), envoient ou reçoivent n'importe quel paquet préparé. | ||
enet.linked version (Français) | Retourne la version incluse d'ENet sous forme de chaîne de caractères. | ||
enet.peer:disconnect (Français) | Demande une déconnexion à un pair. | ||
enet.peer:disconnect now (Français) | Force une déconnexion immédiate du pair. | ||
enet.peer:index (Français) | Retourne l'index du pair. | ||
enet.peer:ping (Français) | Envoie un signal ping au pair. | ||
enet.peer:ping interval (Français) | Spécifie un intervalle en millisecondes entre les envois de pings à l'autre bout de la connexion. | ||
enet.peer:receive (Français) | Tente d'extraire de la file d'attente un paquet entrant pour ce pair. | ||
enet.peer:send (Français) | Met en fil d'attente, un paquet à émettre à un peer (pair). | ||
enet.peer:state (Français) | Retourne l'état d'un pair sous forme de chaîne de caractères. |
Exemples
serveur.lua
-- serveur.lua
local enet = require "enet"
local host = enet.host_create("localhost:6789")
while true do
local event = host:service(100)
while event do
if event.type == "receive" then
print("Message reçu: ", event.data, event.peer)
event.peer:send( "pong" )
elseif event.type == "connect" then
print(event.peer, "connecté.")
elseif event.type == "disconnect" then
print(event.peer, "déconnecté.")
end
event = host:service()
end
end
client.lua
-- client.lua
local enet = require "enet"
local host = enet.host_create()
local server = host:connect("localhost:6789")
while true do
local event = host:service(100)
while event do
if event.type == "receive" then
print("Message reçu: ", event.data, event.peer)
event.peer:send( "ping" )
elseif event.type == "connect" then
print(event.peer, "connecté.")
event.peer:send( "ping" )
elseif event.type == "disconnect" then
print(event.peer, "déconnecté.")
end
event = host:service()
end
end
Ceci est un autre exemple qui crée un serveur (récepteur) et un client (émetteur) sur le même ordinateur, avec le même script. Le client va dire « Hi » au serveur à l'infini car ClientSend() est appelé à l'intérieur de la fonction love.update.
enet = require "enet"
enethost = nil
hostevent = nil
clientpeer = nil
function love.load(args)
-- Ouvre une connexion hôte afin de recevoir des messages
enethost = enet.host_create("localhost:6750")
-- Établit une connexion à cet hôte sur le même ordinateur
enetclient = enet.host_create()
clientpeer = enetclient:connect("localhost:6750")
end
function love.update(dt)
ServerListen()
ClientSend()
end
function love.draw()
end
function ServerListen()
hostevent = enethost:service(100)
if hostevent then
print("Server detected message type: " .. hostevent.type)
if hostevent.type == "connect" then
print(hostevent.peer, "connected.")
end
if hostevent.type == "receive" then
print("Received message: ", hostevent.data, hostevent.peer)
end
end
end
function ClientSend()
enetclient:service(100)
clientpeer:send("Hi")
end
Voir également
Autres langues
Dansk –
Deutsch –
English –
Español –
Français –
Indonesia –
Italiano –
Lietuviškai –
Magyar –
Nederlands –
Polski –
Português –
Română –
Slovenský –
Suomi –
Svenska –
Türkçe –
Česky –
Ελληνικά –
Български –
Русский –
Српски –
Українська –
עברית –
ไทย –
日本語 –
正體中文 –
简体中文 –
Tiếng Việt –
한국어
More info