Bonsoir, tout le monde! voila depuis quelques que jours je travail sur un programme qui doit faire communiquer en socket UDP un client et un serveur,ecrit en Ada. le serveur doit envoyer un nombre entier au client,qu'il (le client) doit afficher a l'ecran. en mode TCP ca fonctionne tres Bien Mais en UDP j'arrive pas. le code compile Bien sans erreur au debut Mais quand je lance le programme je recoit une exception. je vous donne le code.
Procedure Programme_Principal is
Task Serveur;
Task body Serveur is
Socket : Socket_type;
Adresse : Sock_Addr_type;
Channel : Stream_access;
begin
Create_Socket (Socket,
Family_Inet,
Socket_Datagram);
-- ^ Creation de la socket en mode UDP.
Adresse.Addr := Addresses (Get_host_by_Address (Any_Inet_Addr));
-- ^ Adresse du serveur.
Adresse.Port := 5566;
-- ^ Numero de Port du serveur.
Bind_Socket (Socket,Adresse);
-- ^ lie la socket serveur a son adresse.
-- # Envoyer Message
Adresse.Addr := Addresses (Get_host_by_address (Any_Inet_addr));
-- ^ adresse du client.
Adresse.Port := 5567;
-- ^ Numero de port du client.
Channel := Stream (Socket,Adresse);
declare
-- # ici je declare un entier en cours de programme
entier : Integer := 4775;
begin
Integer'Output (Channel,entire);
-- ^ envoie du message
end;
-- fin du bloc
Close_Socket (Socket);
-- ^ fermeture de la socket.
end server;
-- # Cote client
Task client;
task body client is
Socket : Socket_type;
Adresse : Sock_Addr_type;
Channel : Stream_access;
begin
Create_Socket (Socket,
Family_Inet,
Socket_Datagram);
-- ^ Creation de la socket en mode UDP.
Adresse.Addr := Addresses (Get_host_by_Address (Any_Inet_Addr));
-- ^ Adresse du client.
Adresse.Port := 5567;
-- ^ Numero de Port du client.
Bind_Socket (Socket,Adresse);
-- ^ lie la socket client a son adresse.
-- # Envoyer Message
Adresse.Addr := Addresses (Get_host_by_address (Any_Inet_addr));
-- ^ adresse du serveur.
Adresse.Port := 5566;
-- ^ Numero de port du serveur.
Channel := Stream (Socket,Adresse);
declare
-- # ici je declare un entier en cours de programme
entier : Integer := Integer'Input (Channel);
-- ^ reception du message
begin
Put (entier);
-- ^ affichage du message recu.
end;
-- ^ fin du bloc
Close_Socket (Socket);
-- ^ fermeture de la socket.
end client;
-- # Programme principal
begin
Initialize;
finalize;
end Programme_principal;
quand je lance le programme je recoit l'exception
raised tasking_error : system.tasking.stages.activate_taks : failure during activation
j'ai deja tout (enfin presque) essayer, les methodes send_socket et receive_socket ne marche pas. si quelqu'un peut m'aider a trouver une solution a ce (petit) probleme. je serai ravi.
Comment communiquer avec socket UDP
× Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
quand je lance le programme je recoit l'exception j'ai deja tout (enfin presque) essayer, les methodes send_socket et receive_socket ne marche pas. si quelqu'un peut m'aider a trouver une solution a ce (petit) probleme. je serai ravi.