Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

socket UDP

1 réponse
Avatar
rafale
Bonsoir a tous !

Je cherche desesperemment a interroger un serveur de jeu via une connexion udp
Apres avoir cherché sans succès un script tout fait, j'ai grifouillé le mien !

Par contre ca ne marche pas, ca freeze ! et puis plus rien !

le script :

#!/usr/bin/perl -w

use strict;
use IO::Socket;

my $serverip = "xxx.xxx.37.59";
my $serverport = 27015;
my $reponse;

my $sock = new IO::Socket::INET(
PeerAddr => $serverip,
PeerPort => $serverport,
Proto => 'udp');
$sock or die "no socket :$!";

my $msg = "/xFF/xFF/xFF/xFFgetstatus";

$sock->send($msg) || die "send: $!";

$sock->recv($reponse, 1024) or die "Error... $!" ;

print $reponse;

merci d'avance pour votre aide

Fabrice

1 réponse

Avatar
Samuel Mouniée
Bonjour,

Bonsoir a tous !

Je cherche desesperemment a interroger un serveur de jeu via une connexion udp
Apres avoir cherché sans succès un script tout fait, j'ai grifouillé le mien !

Par contre ca ne marche pas, ca freeze ! et puis plus rien !


Le protocole UDP est un protocole de messages non connecté à arrivé et
ordre non garanti. Donc il faut gerer les pertes de messages et leur
ordonnancement.

Vous pouvez faire de l'UDP non connecté ou pseudo connecté.

Un bon debut est utilisé IO::Select pour attendre l'arrivé d'un message
avec un timeout, puis de le lire ou de recommencer.

En gros, l'algo est :

- creation des sockets
- ajout des sockets dans la file d'attente
....
- tant que je n'ai pas de reponse
- j'envoi le message
- j'attend x ms l'arrive de la reponse
- je lis la reponse
- je verifie la reponse ( savoir si c'est celle attendu )
- je traite la reponse
...

une phase d'ouverture et de fermeture est a prevoir sur le meme schema.


merci d'avance pour votre aide


padkoa,


Fabrice


.s'nuoM