Also soviel ist mir schon klar: Was ich auf keinen Fall will, ist irgend eine Art "Zentralserver" o.ä. Alle Teilnehmer müssen gleichberechtigt sein, völlig egal, wo Sie laufen und wie Sie konfiguriert sind. Möglichst sollten sie auch gar nichts voneinander wissen, ein völlig verteiltes System von gleichberechtigten Makro-Einheiten, egal ob es sich um MemBrain Instanzen, I/O Treiber oder sonstwas handelt.
Das ist mir auch aus Gründen der Fehlertoleranz des Gesamtsystems sehr wichtig. Wenn irgendwelche Teilnehmer nicht erreichbar sind, oder permanent Übertragungsfehler haben, so sollte das die anderen nicht stören.

Ich gehe mit Dir D'Accord, daß zumindest bzgl. der Verbindungsanfrage die Inputs die Clients und die Outputs Server sind. Wahrscheinlich ist es ausreichend, einen Listening-Server für alle Outputs eines Netzes zu haben, d.h. einen Server Port (und ggf. eine IP-Adresse im Falle mehrerer Netzwerkkarten) für jede MemBrain Instanz, soweit ich das bis jetzt überblicke.
Ob die Clients die Output-Daten des Servers dann zyklisch abfragen müssen, oder automatisch permanent gesendet bekommen, weiß ich noch nicht. Abfragen hat natürlich den Vorteil, dass man einen Client nicht mit Daten zuballert, die er u.U. so schnell gar nicht verarbeiten kann...

Bei den Input Neuronen müsste ich dann wohl soweit gehen, dass man für jedes die IP-Adresse und den Port angeben kann auf die es verbinden soll sowie natürlich eine ID oder einen Namen des Output Neurons von dem es input erhalten soll. Am besten sollte ein input Neuron sich sogar mit mehreren Servern und/oder Neuronen verbinden können, im lokalen NN kann es schließlich auch Signale von vielen anderen Neuronen erhalten.
MemBrain (und jeder andere Teilnehmer) muss dann eben so schlau sein und erkennen, welche Inputs auf den selben Server gehen und die Datenübertragung für diese über einen einzigen Socket abwickeln (aus Performanzgründen), das sollte ja aber kein größeres Problem sein.

Ich denke, es wäre für's erste doch eine Option, das Protokoll festzuschreiben. Erweiterungen über zwischengeschaltete Konverter sind dann schließlich immer noch möglich.

Was möchtest Du mit einer DLL Schnittstelle erreichen? Möchtest Du DLLs für unterschiedliche Protokolle einbinden oder woran hast Du dabei gedacht? Auch die .Exe Start-Option habe ich noch nicht ganz begriffen. Meinst Du das Starten einer Exe durch ein Output-Neuron getriggert? Wäre natürlich auch eine Idee, die relativ "kostengünstig" zu implementieren ist.