Willkommen auf myCSharp.de! Anmelden | kostenlos registrieren
 | Suche | FAQ

Hauptmenü
myCSharp.de
» Startseite
» Forum
» Suche
» Regeln
» Wie poste ich richtig?

Mitglieder
» Liste / Suche
» Wer ist online?

Ressourcen
» FAQ
» Artikel
» C#-Snippets
» Jobbörse
» Microsoft Docs

Team
» Kontakt
» Cookies
» Spenden
» Datenschutz
» Impressum

  • »
  • Community
  • |
  • Diskussionsforum
new TcpListener(serverPort) deprecated
Rapthor
myCSharp.de - Member



Dabei seit:
Beiträge: 151

Themenstarter:

new TcpListener(serverPort) deprecated

beantworten | zitieren | melden

Hallo,

ich erstelle einen TcpListener mithilfe folgender Code-Zeile:

TcpListener tcpServer = new TcpListener(serverPort);

.. und bekomme folgende Warnung:

Warning 'System.Net.Sockets.TcpListener.TcpListener(int)' is obsolete: 'This method has been deprecated. Please use TcpListener(IPAddress localaddr, int port) instead.

Wenn ich jedoch den vorgeschlagenen Konstruktor verwenden soll, weiß ich nicht was localAddress darstellen soll. Wenn ich 127.0.0.1 einsetze, dann erkennt dieser TcpListener bei mir nurnoch Verbindugnen, die vom selben Rechner ausgehen. Alles von außen wird blockiert.

Was kann ich tun, um nicht mit der Warnung leben zu müssen?
private Nachricht | Beiträge des Benutzers
herbivore
myCSharp.de - Experte

Avatar #avatar-2627.gif


Dabei seit:
Beiträge: 52329
Herkunft: Berlin

beantworten | zitieren | melden

Hallo Rapthor,

in der Doku zu dem Konstruktor, den du verwenden willst/sollst steht doch, was man an IpAdresse verwenden kann/soll:

IPAddress ipAddress = Dns.Resolve("localhost").AddressList[0];

Oder geht das nicht?

herbivore
private Nachricht | Beiträge des Benutzers
Bernhard
myCSharp.de - Member



Dabei seit:
Beiträge: 119

beantworten | zitieren | melden

Zitat
IPAddress ipAddress = Dns.Resolve("localhost").AddressList[0];

Oder geht das nicht?

Hallo,

da wurde die Dokumentation wohl nicht gut genug gewartet, denn Dns.Resolve ist laut Beta 2 ebenfalls deprecated.
Man muss die Fehlermeldung allerdings nur noch eine Ebene weiter verfolgen und man gelangt zum Ziel.


public static IPAddress GetLocalIp() {
    return Dns.GetHostEntry(Dns.GetHostName()).AddressList[0];
}

// ...

TcpListener listener = new TcpListener(GetLocalIp(), port);

GetLocalIp liefert jetzt je nach dem ob man in einem Netzwerk ist, bzw.
im Internet die entsprechende IP und ansonsten eben die Loopback IP.

grüße
private Nachricht | Beiträge des Benutzers
maxE
myCSharp.de - Member



Dabei seit:
Beiträge: 456
Herkunft: Sachsen

beantworten | zitieren | melden

Vielleicht solltes du das statische Feld IPAddress.Any für so was verwenden?
Laut Doku steht dazu:
Provides an IP address indicating that the server should listen for client activity on all network interfaces. This field is read-only.
I am Jack's smirking revenge.
I am Jack's raging bile duct.
I am Jack's cold sweat.
I am Jack's complete lack of surprise.
I am Jack's broken heart.
I am Jack's wasted life.
private Nachricht | Beiträge des Benutzers
Rapthor
myCSharp.de - Member



Dabei seit:
Beiträge: 151

Themenstarter:

beantworten | zitieren | melden

Zitat
Original von maxE
Vielleicht solltes du das statische Feld IPAddress.Any für so was verwenden?
Laut Doku steht dazu:
Provides an IP address indicating that the server should listen for client activity on all network interfaces. This field is read-only.

Das hört sich ganz gut an! Werde ich also zukünftig verwenden. Danke!

Die Sache, die Bernhard vorschlug geht auch mit einer kleinen Veränderung:

Dns.GetByName(Dns.GetHostName()).AddressList[0]

"GetByName" anstelle "GetHostEntry", denn "GetHostEntry" gibt's nicht (mehr).
private Nachricht | Beiträge des Benutzers
Bernhard
myCSharp.de - Member



Dabei seit:
Beiträge: 119

beantworten | zitieren | melden

Zitat
"GetByName" anstelle "GetHostEntry", denn "GetHostEntry" gibt's nicht (mehr).

Kann ich nicht nachvollziehen, da ich mein Beispiel testweise kompiliert habe
und sowohl in der offline Dokumentation als auch der MSDN gefunden habe.

Dns.GetHostEntry Method

Dafür aber konnte ich Dns.GetByName nicht finden, eventuell meinst
du ja Dns.GetHostByName, welches aber ebenfalls deprecated ist.

grüße
private Nachricht | Beiträge des Benutzers
Rapthor
myCSharp.de - Member



Dabei seit:
Beiträge: 151

Themenstarter:

beantworten | zitieren | melden

Dns.GetHostEntry bietet er mir garnicht erst an, aber du hattest Recht, dass es "GetByHostName()" heißen muss. Hierbei meldet er mir jedoch keinen "deprecated".

Ich verwende VisualStudio 2005 Beta 2 mit .Net 2.0 Beta. Mag vielleicht daran liegen.

Gruß,
Rapthor
private Nachricht | Beiträge des Benutzers
Bernhard
myCSharp.de - Member



Dabei seit:
Beiträge: 119

beantworten | zitieren | melden

Dns.GetHostByName Method

GetHostByName ist also sehr wohl deprecated.
private Nachricht | Beiträge des Benutzers