Portfreigabe

  • C#
  • .NET (FX) 4.0

Es gibt 2 Antworten in diesem Thema. Der letzte Beitrag () ist von Runshak.

    Portfreigabe

    hallo,

    ich wollte mich mal erkundigen, was es an sinnvollen Alternativen gibt bzw. was ich besser machen könnte...

    Es geht um das freigeben eines Ports bzw. das Hosten...

    Mein Server öffnet nen Port (den er aus ner txt.Datei liest um ihn auch mal ändern zu können) aber da kann ich jetzt nur mit einem Client draufzugreifen...aber es sollten mehrere sein...das ganze läuft über WCF...ist es jetzt besser mehrere verschiedene Server laufen zu lassen (für jeden Client einen) oder einen Server der mehrere Ports öffnet?

    Spoiler anzeigen

    Der Code vom Server...

    C#-Quellcode

    1. public MainWindow()
    2. {
    3. InitializeComponent();
    4. ServiceHost sh = new ServiceHost(typeof(Cservice));
    5. string Host = System.Net.Dns.GetHostName(); // Name im Netzwerk
    6. var IPAddress = Dns.GetHostEntry(Host).AddressList.First(adr => adr.AddressFamily != AddressFamily.InterNetworkV6); //gibt ipv4 zurück
    7. FileInfo fi = new FileInfo(System.Windows.Forms.Application.ExecutablePath); // Pfad von .txt-Datei im Debug-Verzeichnis vom Server
    8. string path;
    9. path = fi.DirectoryName + "\\Portnummer.txt";
    10. string portnummer;
    11. portnummer = File.ReadAllText(path); // liest Portnummer aus .txt heraus
    12. sh.AddServiceEndpoint(typeof(Ivertrag), new NetTcpBinding(SecurityMode.None), "net.tcp://" + IPAddress + ":" + portnummer + "/IvertragAsynchron");
    13. sh.Open();
    14. string adresse;
    15. adresse = "Server läuft auf: " + "net.tcp://" + IPAddress + ":" + portnummer + "/IvertragAsynchron";
    16. txtBoxOben.Text ="Portnummer: " + portnummer+ "\r\n" + adresse;
    17. }
    Auch ein WCF Server verhält sich wie ein sonstiger Server, er bedient mehrere Clients. Wie zeigt sich, dass nur ein Client gleichzeitig abgefertig wird?

    Was bei Remoting und WCF aber ganz praktisch ist, man kann das ganze via HTTPChannel realisieren, sodass man über den Port 80 kommuniziert. Das umgeht direkt ein Problem mit sehr vielen Firewalls, jedoch werden dann wieder Proxys ein Thema...