2009-07-21 6 views
2

J'ai construit un client .NET Remoting qui fonctionne très bien sur la machine de la carte réseau unique, et beaucoup de messages de test reçus via l'événement distant. Mais quand une carte réseau supplémentaire a été ajoutée, le client semblait être en mesure de se connecter au serveur distant, mais les messages de test ne peuvent plus arriver. À partir du débogage, la fin du serveur a déclenché l'événement mais le client n'a pas obtenu cela. Vérification de google et de trouver qu'un rapport de problème similaire: http://www.eggheadcafe.com/community/aspnet/2/10061570/reply.aspxProblème du client .NET Remoting lors de l'exécution sur la machine avec plusieurs cartes réseau

Je me demandais juste des solutions?

Merci d'avance!

+0

si vous le savez - .NET Remoting a été dépréciée en faveur de la WCF. –

Répondre

1

Cela a été un problème pour moi aussi.

La nature de ce problème est de savoir comment le client enregistre les gestionnaires d'événements sur le serveur. Lors de l'ajout d'un gestionnaire d'événements, le client envoie l'adresse IP de l'adresse "liée". C'est un champ non public statique dans la classe TcpChannel (merci réflecteur). Vous devez lier explicitement le client à l'adresse IP que le serveur sera en mesure d'atteindre. Le fichier de configuration pour le client devrait être quelque chose comme ça.

<channel ref="tcp" port="0" bindTo="your.ip.address.here" > 
+1

Ou chaîne machineName = System.Environment.MachineName; if (! String.IsNullOrEmpty (nom_ordinateur)) { channelSettings.Add ("nom_machine", nom_machine); } –

1

J'ai problème à faire mon .Net Remoting C# programme client-serveur pour travailler et de se connecter à l'autre quand il y a un routeur entre le client et le serveur .

ensemble sur le côté client

useIpAddress = false

exemple:

<system.runtime.remoting> 
    <application name="Client"> 
     <channels> 
     <channel ref="tcp" port="0" useIpAddress="false"> 
      <clientProviders> 

http://msdn.microsoft.com/en-us/library/system.runtime.remoting.channels.tcp.tcpchannel(v=vs.71).aspx