Laden...

[gelöst] Mehrere TCP Listener auf Port 80

Erstellt von Fridoo vor 13 Jahren Letzter Beitrag vor 13 Jahren 4.461 Views
F
Fridoo Themenstarter:in
47 Beiträge seit 2010
vor 13 Jahren
[gelöst] Mehrere TCP Listener auf Port 80

Hallo Forum

Ich arbeite an einem kleinem Chat.
Um alle Computer egal wie viele Router usw. dazwischen hängen zu erreichen verwende ich einen TCP Client über Port 80.
Da aber schon andere Listeners auf diesem Port existieren bekomme ich den Fehler mit der id 10013

An attempt was made to access a socket in a way forbidden by its access permissions

Da Skype soweit ich weiss auch über den Port 80 arbeitet muss es eine Möglichkeit geben dies zu bewerkstelligen.
Hat jemand eine Idee wie ich dieses Problem umgehen könnte?


IPAddress ip = IPAddress.Parse(Server);
TcpListener tcp = new TcpListener(ip, Port);

tcp.Start();

Byte[] bytes = new Byte[256];
String data = null;
while (true)
{
    TcpClient client = tcp.AcceptTcpClient();
    data = null;
    NetworkStream stream = client.GetStream();
    int i;
    while ((i = stream.Read(bytes, 0, bytes.Length)) != 0)
    {
        data = System.Text.Encoding.ASCII.GetString(bytes, 0, i);
        DataReceived.Invoke((object)data, new EventArgs());
    }
    client.Close();
}
tcp.Stop();

Danke im voraus
Fridoo

479 Beiträge seit 2008
vor 13 Jahren

Hallo,

in Skype abschalten, dass es Port 80 nutzt 😉

mfg.
markus111

[Follow me on Twitter](http://twitter.com/blendingsky)
F
Fridoo Themenstarter:in
47 Beiträge seit 2010
vor 13 Jahren

da auch noch andere Prozesse wie der System Prozess einen Listener auf Port 80 haben ist das abschalten der anderen Listener keine Lösung...
Die Lösung die ich suche wäre parallel mit den anderen Listeners zu arbeiten...

130 Beiträge seit 2005
vor 13 Jahren

Du bedenkst hoffentlich, und darauf weist auch die Meldung hin, dass du für privilegierte Prots normalerweise Adminrechte brauchst?

3.170 Beiträge seit 2006
vor 13 Jahren

Hallo,

da auch noch andere Prozesse wie der System Prozess einen Listener auf Port 80 haben Welche wären das denn?
Wnne Du in der CMD mal

netstat -a

eintippst siehst Du die Ports,d ie abgehört werden.
Du wirst feststellen daß pro IP jeder Port nur maximal 1x geöffnet ist.
Wenn der Port von einem Programm bereits abgehört wird, kann ein zweites ihn nicht nochmal öffnen. Umgekehrt kann ein Programm aber mehrere Ports gleichzeitig öffnen.
Daß Skype Port 80 abhört, wage ich daher zu bezweifeln - es spricht eher Port 80 auf dem Skype-Server an.

Gruß, MarsStein

Non quia difficilia sunt, non audemus, sed quia non audemus, difficilia sunt! - Seneca

F
Fridoo Themenstarter:in
47 Beiträge seit 2010
vor 13 Jahren

Image Name PID Session Name Session# Mem Usage
========================= ======== ================ =========== ============
System 4 Services 0 556 K

Dies ist der Prozess der auf den Port 80 hört.

Denkt ihr einen DB-Server zu verwenden anstatt die Nachrichten über TCP zu versenden wäre sinnvoller?

3.170 Beiträge seit 2006
vor 13 Jahren

Hallo,

Dies ist der Prozess der auf den Port 80 hört.

Das dürfte ein Systemprozess sein, und die dahinterstehende Anwendung ist dann der IIS (wenn Du in den Diensten WWW-Publishing abschaltest, ist der weg).

Du brauchst den Port ja auch nur auf der Serverseite, wenn Du Dich mit einem Client verbinden willst, wird normalerweise ein Port vergeben, auf dem gesendet wird und die Antworten empfangen werden, da brauchst Du Dich nicht selbst drum kümmern.

Denkt ihr einen DB-Server zu verwenden anstatt die Nachrichten über TCP zu versenden wäre sinnvoller? Für einen Chat halte ich das für nicht zweckmäßig, da dann jeder Client direkt auf die DB zugreifen könnte.
Aber warum muss es denn ausgerechnet Port 80 sein? Das ist der Standard-HTTP-Port und ist auch auf sehr vielen Rechnern durch einen Webserver belegt.
Wenn Du unbedingt die 80 willst, darf also kein Webserver laufen (auf dem Rechner, auf dem Dein Chat-Server läuft).

Gruß, MarsStein

Non quia difficilia sunt, non audemus, sed quia non audemus, difficilia sunt! - Seneca

F
Fridoo Themenstarter:in
47 Beiträge seit 2010
vor 13 Jahren

Das dürfte ein Systemprozess sein, und die dahinterstehende Anwendung ist dann der IIS

Nachdem der ISS nicht mehr lief funktionierte es.

Aber warum muss es denn ausgerechnet Port 80 sein?

Ich verwende den Port 80 um den Standard Port-forwarding vom Router zu verwenden.
Somit komme ich auf alle Computer

Wenn Du unbedingt die 80 willst, darf also kein Webserver laufen

Auf meinem Server wäre es kein Problem.

Da ich auf dem Server und dem Client je ein Listener und ein Sender brauche wäre immer noch das Problem das wenn auf dem Client einen Webserver läuft das der Listener da probleme macht...

3.170 Beiträge seit 2006
vor 13 Jahren

Hallo,

warum brauchst Du auf dem Client einen Listener? Wenn Du eine Verbindung hergestellt hast, kannst Du darüber senden und empfangen, eine zweite Verbindung in der Gegenrichtung ist nicht nötig.

Gruß, MarsStein

Non quia difficilia sunt, non audemus, sed quia non audemus, difficilia sunt! - Seneca

Z
403 Beiträge seit 2007
vor 13 Jahren

Hallo Fridoo,

und wofür braucht die Client Seite noch Port 80 ?

Vielleicht erzählst du mal ein wenig ganauer was du vor hast.
Denn eigentlich wurde schon alles gesagt. Mehrere Listener auf einem Port funktionieren schlichtweg nicht.

André

F
Fridoo Themenstarter:in
47 Beiträge seit 2010
vor 13 Jahren

Wenn Du eine Verbindung hergestellt hast, kannst Du darüber senden und empfangen, eine zweite Verbindung in der Gegenrichtung ist nicht nötig.

Mir war bis jetzt nicht klar das ich nur einen Listener benötige um den Daten verkehr zu bewerkstelligen...

Wie kann ich den die Klasse TCP Client benutzen um Daten zu empfangen?
Oder benötige ich eine andere Klasse?

479 Beiträge seit 2008
vor 13 Jahren

Wenn Du eine Verbindung hergestellt hast, kannst Du darüber senden und empfangen, eine zweite Verbindung in der Gegenrichtung ist nicht nötig.
Mir war bis jetzt nicht klar das ich nur einen Listener benötige um den Daten verkehr zu bewerkstelligen...

Wie kann ich den die Klasse TCP Client benutzen um Daten zu empfangen?
Oder benötige ich eine andere Klasse?

Ja, solltest du können.
Dein Webbrowser startet ja auch keinen Server (TcpListenser) auf deinem Computer.

mfg.
markus111

[Follow me on Twitter](http://twitter.com/blendingsky)
3.170 Beiträge seit 2006
vor 13 Jahren

Hallo,

Wie kann ich den die Klasse TCP Client benutzen um Daten zu empfangen?

das steht in der FAQ:
[FAQ] TcpClient einfaches Beispiel

Gruß, MarsStein

Non quia difficilia sunt, non audemus, sed quia non audemus, difficilia sunt! - Seneca

F
Fridoo Themenstarter:in
47 Beiträge seit 2010
vor 13 Jahren

Vielen danke für die antworten

[COLOR]PS:
Wer hat die Aufgabe das Thema zu schliessen und wie?
[/COLOR]
Z
403 Beiträge seit 2007
vor 13 Jahren

Liebe myCSharp-Benutzer,

ihr könnt anderen myCSharp-Benutzern das Leben und die Forumssuche erleichtern, wenn ihr eure Threads durch ein vorangestelltes [erledigt] im Titel als erledigt kennzeichnet, sobald das der Fall ist. Dazu einfach im ersten Beitrag des Threads auf 'Beitrag editieren' klicken, bei 'Thema:' das [erledigt] eintragen und den 'Beitrag speichern'. Statt [erledigt] könnt ihr natürlich auch [gelöst] verwenden, wenn das die Sache besser trifft, also insbesondere, wenn eine funktionierende und für andere nachvollziehbare Lösung des Problems auch wirklich explizit im Thread angegeben wurde.

Threads können nur von Moderatoren geschlossen werden. Dass ein Thread erledigt oder gelöst ist, ist jedoch kein Grund ihn zu schließen, da es immer sein kann, dass zu dem Thema im Nachhinein noch wichtige oder interessante Aspekte oder Ergänzungen auftauchen.

herbivore