kleinen primitven chat

wie macht man es dann?

Wie gesagt ist das Ziel von diesem Chat, dass kein User einen Server stellen muss, und es wird auch keinen festen Server geben.

Meine Überlegung ist die folgende, dass jeder User einen Clienten, und einen Server hat, der Server aber versteckt im Hintergrund lauft. Will sich nun ein neuer User im Chat anmelden, so wird sein Server gestartet, welcher dann versucht die anderen Server zu erreichen. Ich denke ich mache an dieser Stelle einfach einen Broadcast an alle im Netzwerk, und die anderen Server reagieren halt dann darauf (oder ist das schon zu viel der Netzauslastung?).

Nun werden die Channel/User-Listen an den neuen Clienten (bzw. dessen Server) geschickt.

Oberstes Ziel dieses Chats soll eben sein, dass sich der User nicht mit Servern herumquälen muss!
 
Ich denk, dass Netzwerk dürfte doch sehr darunter leiden. Das Problem ist, dass wenn du keinen extra Server laufen lassen willst, brauchst du trotzdem einen. Wenn jetzt ein Anwender seinen "Clienten" startet, könnte man das ganze ja so handhaben, dass dieser dann das Netzwerk nach schon existierenden Servern/"Clienten" durchsucht und zu diesem connectet. Existiert keiner wird automatisch ein neuer erstellt. Für mich ergeben sich dabei allerdings 2 Probleme :
1. Was ist, wenn 2 Benutzer gleichzeitig als erste ihr Programm starten ? (Problem der 2 Server)
2. Wie lange dauert es das Netzwerk zu durchsuchen (Ports abhören bzw. IPs checken) bzw. wie kann man das Verfahren etwas verkleinern ?

Bei deiner Methode muss jeder Client dauernd den jeweiligen Port abhören und das ist meiner Meinung nach nicht so toll :)

Aber ich bin ja auch noch kein Profi, deshalb nur meine Gedanken mal so ..

MfG
 
Also ich denke auch, dass ein dauerhafter Netzwerk-Scan nicht gerade das Gelbe vom Ei ist. Wir hatten an der Berufsschule mal ein Überwachungs-Tool laufen. Das hat auch dauerhaft alles und jeden gescant. Als Folge ist das Netz 3x täglich kollabiert. Das nervt auf Dauer. Zugegeben musst Du vielleicht nicht sooo viele Ports scannen wie das Tool, aber trotzdem ist es "unsauber" programmiert denke ich. :)

Jeden vernünftigen und Ressourcen-schonenden Chat den ich kenne benutzt einen Server, egal ob nun fest oder variabel. Ich meine einen richtigen Server wie man sich das vielleicht fälschlicherweise vorstellt wirst Du vielleicht garnicht benötigen, aber zumindest einen festen Platz an dem die IP-Adressen der Chat-Mitglieder abgelegt werden (wobei das wieder einem Server gleichkommt). :)

Ich würde es MIT Server lösen.
 
Ich schliesse mich Saber und Erik an.
Mit einem 'richtigen' Server bist du auf der besseren Seite,
vorallem wenn du diese Funktion haben willst:

Wenn ja geht beim User einfach ein neues Fenster auf, wo er die anderen User sieht, und die von den anderen Usern in diesem Channel geschriebenen Messages lesen kann

Das deute ich so, dass du dem neuen Client das zuvor geschriebene übermitteln willst.
Das solltest du dann ja wo speichern, am besten in einer Datenbank oder so.
 
Ich stimme dem ganzen zu, habe mir auch schon ähnliche Gedanken gemacht...
habe bisher auch kleinere Dinge in Java verwirklicht...mein nächstes großes (allerdings kommerzielles) Projekt wird ein auf dem irc-protokoll(RFC 1459 und RFC 2813) basierender Server sein.

Ich dachte bei einem "verteilten" System an ein Chat System, was sich eine Mysql-Datenbank nimmt, bzw eine Art "Hashtable" in der die Clents usw. gespeichert werden.
Dies kann man im prinzip auf jedem freeweb verwirklichen....mit MySQL wäre es schneller...aber minimale Anforderung "serverseitig" wäre nur ein ftp zugang zu einem web......bis ich dieses Projekt jedoch zum ersten Release gebracht hat wird es bei der momentan Auftragslage noch ziemlich dauern...

.....(aber vielleicht ist es ja ein Anreiz und ich brauch das gar nicht mehr...in dem Fall am besten das ganze bei sourceforge erstellen...und mir mailen....dann würd ich zumindest mitwirken ...solang es java oder c# ist, da ich es für linux und windows plane)

gruß Andy;-)

http://www.yellohost.de
 
Hallo zusammen,

ich habe nicht ganz den plan vom Netzwerkprogrammieren, aber ich hab mir mal ein paar gedanken gemacht.

Wie wäre es wenn jeder Client sein eigener Server ist mit eigener IP liste. Wenn sich ein "Client" im Netzwerk einloggt dann sucht er sich den nächsten "Server" und kopiert sich die IP liste und sendet dann an alle anderen die in der liste stehen das er jetzt auch da ist. Somit hat man immer aktuelle listen. Und die Channels könnte man auch über die listen verwirklichen in dem man die IP's bestimmten channels zu ordnet und wenn jemand den channel wächselt schickt der das wieder an alle IP's usw. usw.

Wäre doch ne möglichkeit. So müsste man nicht die ganze Zeit die Ports scannen und hätte trotzdem keinen "Server".

Hoffe das hilft weiter.

MfG mgd-one
 
Wie gesagt kein Profi ;)

Allerdings muss ich doch gewehrleisten das durchgehend eine Server vorhanden ist und wenn ich keinen festen Server habe muss das ein Client übernehmen, da ich aber nicht weiß welcher Client durchgehend "Connected" ist muss eigentlich jeder Client die Informationen haben... Verusacht natürlich viel Traffic.

Vieleicht übersehe ich da auch was...

MfG mgd-one
 
Zuletzt bearbeitet:
Dann leg halt auf irgendso einem x-beliebigen Free-Webspace-Server eine Datei ab mit der IP, die sich am ersten eingeloggt hat. Dann hast ja 1 Rechner im Netz und somit hast einen Server. ;)

Der wird sich zwar dann freuen, wenn Du ihn mit Traffic zupumpst ... but that´s life ... *fg* ;)

Mal im Ernst ... leg irgendwo so eine Datei ab und regle so, wer der Server sein soll. Wär zumindest eine Möglichkeit zu beginnen. :)
 
Also ich hätte da glaub ich eine Lösung die rein Theoretisch funktionieren müsste.
Also einer Startet seinen Clienten, ein paar andere Logt sich beispielsweise dazu, die Clients kommunizieren dann untereinander, und beispielsweise jede 10tel Sekunde werden die Listen auf alle Clients verteilt.
Sobald der Server (derjenige der sich als erstes eingelot hat) abmeldet, übernimmt ein anderer Clienbt diese Aufgabe.
Wäre das den nicht möglich

mfg Rauch
 

Neue Beiträge

Zurück