[Remoting] probleme avec le remoting

probleme avec le remoting [Remoting] - C#/.NET managed - Programmation

Marsh Posté le 26-04-2008 à 16:35:09    

hello
 
voila j'ai un programme qui tourne en service
 
ce programme crée un channel TCP pour faire du remoting:
 

Code :
  1. channel = new TcpServerChannel("remote_test",9988);
  2. ChannelServices.RegisterChannel(channel, true);


 
ensuite je partage un objet Remote grace au remoting de cette maniere:

Code :
  1. r = new Remote(lesPabx, parametres, pabx_generic); //construction de mon objet
  2. RemotingServices.Marshal(r, "Remote" ); //partage de l'objet


 
 
ceci fonctionne bien: je lance le service; un programme client recupere l'objet et peut appeler les methodes de l'objet etc
nickel donc
 
seulement mon service doit de temps en temps s'arreter et redemarrer immediatement (lors des changements de parametres par exemple)
 
or jusqu'a maintenant ça marchait bien
 
mais j'ai testé le programme sur un autre ordi et ça ne fonctionne plus:
 
lors du premier demarrage du service tout est ok
si je coupe le service et que je le redemarre aussitot j'ai un message d'erreur:
 
Erreur lors de la creation des channels de remoting: Une seule utilisation de chaque adresse de socket (protocole/adresse réseau/port) est habituellement autorisée
 
 
comment eviter ça?
 
j'ai testé de rajouter ce code avant de creer mon TcpServeurChannel:
 

Code :
  1. IChannel[] canauxExistants = ChannelServices.RegisteredChannels;
  2. foreach (IChannel c in canauxExistants)
  3. {
  4.         if (c.ChannelName == "remote_test" )
  5.                ChannelServices.UnregisterChannel(c);
  6. }


 
 
mais ça ne fonctionne pas mieu...
help
merci


Message édité par warenbe le 26-04-2008 à 16:36:29

---------------
mon feedback: http://forum.hardware.fr/hfr/Achat [...] 8120_1.htm
Reply

Marsh Posté le 26-04-2008 à 16:35:09   

Reply

Marsh Posté le 26-04-2008 à 16:46:06    

J'ai eu des problème similaire avec Ada
je ne suis pas de la partie, cependant, peut-être avec un truc du genre setsocketoption( ...., reuse_address);
 
Mais rien de certain.
 

Reply

Marsh Posté le 26-04-2008 à 17:24:20    

ha vais voir oui si je peux pas dire qu'il faut ré utiliser le meme port


---------------
mon feedback: http://forum.hardware.fr/hfr/Achat [...] 8120_1.htm
Reply

Marsh Posté le 26-04-2008 à 17:47:28    

bon voila j'ai trouvé!
 
en fait j'ai été stupide:
 
d'une part mon service avait un thread lancée qui utilisait l'objet partagé. quand j'arretais ce service j'oubliais d'arreter le thread
une fois le thread arreté mon erreur a disparu
 
d'autres part j'ai bien mis un ChannelServices.UnregisterChannel(c); mais cette fois lors de l'evenement annonçant l'arret du service et pas au demarragé


---------------
mon feedback: http://forum.hardware.fr/hfr/Achat [...] 8120_1.htm
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed