2010-09-14 10 views
5

Ich bin ein bisschen ein Netzwerk n00b, also seien Sie bitte sanft und erklären Dinge auf eine wirklich, wirklich dumm Weise (es scheint mir, dass jedes Mal, wenn es um Netzwerk bezogenen Sachen kommt, Leute fangen an, eine völlig andere Sprache zu sprechen). Ich bin ein ziemlich erfahrener C# -Programmierer, aber es fehlt etwas Geschick, wenn es um die Kommunikation zwischen Maschinen geht.Mocking eine TCP/IP-Verbindung mit C#

Das Szenario ist das: Ich arbeite mit einem Produkt, das über tcp/ip mit anderen Geräten kommuniziert. Ist es möglich, ein Dummy-Programm zu erstellen, das wie ta TCP/IP-Verbindung (lokal auf meinem Rechner) funktioniert, so kann ich mein anderes Programm anschließen, indem ich seine IP-Adresse (und seinen Port) festlege und es dann zurückgehe/Testdaten, die ich will?

Antwort

0

Um ehrlich zu sein, ich sehe nicht den Punkt, 'etwas' hier zu verspotten nur die richtige TCP/IP-Verbindung verwenden, weil Sie offensichtlich die Daten über TCP/IP zwischen zwei verschiedenen Anwendungen auf der gleichen IP senden können.

Schauen Sie sich dieses Beispiel:

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

+0

Es dass @erikric nicht in der Lage sein kann, ist eine lokale Instanz des Remote-Systems, mit dem laufen, denen er zu kommunizieren versucht, so zu Entwicklungszwecken im Grunde Er versucht, die Antworten zu simulieren, die er von den von ihm erwähnten Geräten erwarten würde. –

+0

stimmt, aber er sagte genau, dass er seine lokale Maschine für die Entwicklung verwendet, so kann ich mir kein Szenario vorstellen, wo die Einstellung eines lokalen "Senders" und lokalen "Empfängers" ein Problem wäre. Er könnte sogar hist 'hosts'-Dateien modifizieren, um Aufrufe an die IP des realen Servers in seine 127.0.0.1-Instanz umzuordnen. – rochal

+1

Ich bin nicht sicher, ob ich @rochal folge, aber ich vermute, dass wir unterschiedliche Interpretationen der Frage haben, die er gestellt hat. Ich näherte mich der Richtung, in der der OP nicht erwog, die Verbindung selbst zu verspotten, nur die Daten, die zurückgegeben wurden, um eine Verbindung zu einem entfernten Gerät zu simulieren, und seine Absicht war, einen Serverprozess zu entwickeln, der lokal auf demselben Rechner wie sein Client ausgeführt wurde verarbeiten. Ich könnte aber falsch liegen :) –

0

Ja: Sie können eine TCP-Verbindung zu einem Programm einrichten, das auf Ihrem eigenen Computer ausgeführt wird. Der Hostname, den Sie verwenden sollten, ist localhost, oder die IP-Adresse ist 127.0.0.1: siehe auch Loopback (Virtual Network Interface).

0

ich das schon getan haben. Ich habe eine Reihe von Werkzeugen für Mocking verschiedenen Technologien geschaffen, die Sie sich hier herunterladen können:

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

Diese Sie einrichten, um eine Daten können gesendet und empfangen werden. Sie müssen vielleicht ein bisschen zwicken, aber das Wichtigste ist schon da.

Ich glaube, Sie sind interessiert an TcpReceiveMiniServer.

Hier ist ein Mini-Beispiel:

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 
    }