2010-09-14 4 views
5

Je suis un peu un réseau n00b, alors s'il vous plaît soyez gentil et expliquez les choses d'une manière vraiment, VRAIMENT factice (il me semble que chaque fois qu'il s'agit de choses liées au réseau, les gens commencent à parler une langue totalement différente). Je suis un programmeur C# assez expérimenté, mais manque de compétences quand il s'agit de la communication entre les machines.Se moquer d'une connexion TCP/IP avec C#

Le scénario est le suivant: Je travaille avec un produit qui communique avec d'autres appareils via tcp/ip. Est-il possible de créer un programme factice qui fonctionne comme une connexion ta tcp/ip (localement sur ma machine), donc je peux y connecter mon autre programme en définissant son adresse IP (et son port), et ensuite le renvoyer quel que soit le moqueur/Test des données que je veux?

Répondre

0

Pour être honnête, je ne vois pas l'intérêt de 'se moquer' ici, il suffit d'utiliser la bonne connexion TCP/IP car vous pouvez évidemment envoyer les données via TCP/IP entre deux applications différentes sur la même IP.

Découvrez cet exemple:

http://www.codeproject.com/KB/IP/tcpclientserver.aspx

+0

Il se peut que @erikric n'est pas en mesure d'exécuter une instance locale du système distant avec lequel qu'il essaie de communiquer, donc à des fins de développement est essentiellement Il cherche à simuler («moquer») les réponses qu'il s'attend à recevoir des dispositifs qu'il mentionne. –

+0

vrai, mais il a dit précisément qu'il utilise sa machine locale pour le développement, donc je ne peux pas imaginer un scénario où la mise en place d'un "expéditeur" local et d'un "récepteur" local serait un problème. Il pourrait même modifier le fichier hist hosts pour réassigner les appels à l'adresse IP du serveur réel dans son instance 127.0.0.1. – rochal

+1

Je ne suis pas sûr de suivre @rochal, mais je pense que nous pouvons avoir différentes interprétations de la question qu'il posait. Je l'ai abordé à partir de la direction que l'OP ne considérait pas moqueur de la connexion elle-même, juste les données retournées pour simuler une connexion à un périphérique distant, et son intention était de développer un processus serveur à exécuter localement sur la même machine que son client processus. Je pourrais me tromper si :) –

0

Oui: vous pouvez configurer une connexion TCP à un programme s'exécutant sur votre propre machine. Le nom d'hôte que vous devez utiliser est localhost ou l'adresse IP est 127.0.0.1: voir aussi Loopback (Virtual Network Interface).

0

Je l'ai fait auparavant. J'ai créé un ensemble d'outils pour Mocking différentes technologies que vous pouvez télécharger à l'adresse:

http://www.codeproject.com/KB/biztalk/Excellence.aspx

Cela vous permet de configurer une donnée à envoyer et de recevoir. Vous pourriez avoir à le modifier un peu, mais les choses principales sont déjà là.

Je crois que vous êtes intéressé par TcpReceiveMiniServer.

Voici un mini-échantillon:

static void Main(string[] args) 
    { 
     TcpReceiveMiniServer server = new TcpReceiveMiniServer(8789); 
     server.Start(); 
     server.DataArrived += new TcpReceiveMiniServer.DataArrivedHandler(server_DataArrived); 
     Console.Read(); 
    } 

    static void server_DataArrived(object sender, DataArrivedEventArgs e) 
    { 
     // do something with e.Data 
    } 
Questions connexes