Laden...

Chatsoftware für LAN

Erstellt von MDCoke vor 15 Jahren Letzter Beitrag vor 15 Jahren 13.317 Views
MDCoke Themenstarter:in
109 Beiträge seit 2008
vor 15 Jahren
Chatsoftware für LAN

Hallo liebe C# Community,
ich bin neu hier und möchte auch gleich loslegen und mein erstes Projekt vorstellen:

Eine Software zum Chatten per LAN, genannt "KommunikationsplattformPS".
Die Software entwickle ich zurzeit für die Schule, als Absicht, dass die Schüler im Informatikraum während der Stunde auch chatten und Informationen austauschen können 😁

Das Projekt besteht jetz shcon seit 2 Wochen und ich hab jetz noch bis zum Januar Zeit das Programm zur Vollendung zu bringen, daher hoffe ich auf Verbesserungsvorschläge und vielelicht könntet ihr auch sagen, was euch gefällt und was nicht.

Ach und ich hab noch einige Ideen die ich in das Programm im Laufe der Zeit einbauen werde, auf Verbesserungvorschläge werde ich jedoch in höherer Priorität eingehen, sofern sie möglich sind 🙂

Lange genug geredet, eine kleine Anleitung:
Wenn das Programm geöffnet ist, könnt ihr einen Kontakt hinzufügen und wenn ihr diesen in der Listbox anklickt mit ihm chatten indem ihr auf verbinden drückt.
Wichtig ist dass einer der beiden PC's die mit einander chatten wollen der Server ist und der andere der Client, der Server muss vor dem Client erstellt sein, was ihr aber wahrscheinlich wisst. Wenn ihr euch zu eurem eigenen PC verbinden wollt, dann gebt einfach 127.0.0.1 ein als IP Adresse... war die Anleitung wirklich nötig? keine Ahnung bin ja neu hier 😉

Download:
http://www.materialordner.de/i3V7dz3SRodldPr8wbsEypL0JXog3aub.html

MfG MDCoke

630 Beiträge seit 2007
vor 15 Jahren

Hallo MDCoke,

tolles Programm. Diese schwebenden Textboxen sind spitze.

Ein paar Fehler habe ich gefunden:

Wenn man im Client mehrmals hintereinander ganz schnell auf Senden klickt, stürzt der Server ab.

Wenn ich einen Server erstelle zu dem noch kein Client verbunden ist und ich versuche eine Nachricht zu schicken, stürzt das Programm mit einer NullReferenceException ab.

Das Programm stürzt ab wenn ich mich zu einem Server verbinden will der nicht vorhanden ist.

Mir ist es nicht gelungen eine Unterhaltung mit mehr als 2 Teilnehmern zu führen. (Ist das überhaupt vorgesehen?)

Diese Fehler lassen sich relativ einfach mit hilfe von try/catch sowie einfachen Sanity Checks beheben.

Gruss
tscherno

To understand recursion you must first understand recursion

http://www.ilja-neumann.com
C# Gruppe bei last.fm

MDCoke Themenstarter:in
109 Beiträge seit 2008
vor 15 Jahren

danke für die tolle antwort 😉

ich werd mich gleich daran setzen die fehler zu beheben! haste noch verbesserungswünsche? bisher ist nen chat mit mehreren teilnehmern noch nicht vorgesehen, aber ich denke, dass das vielleicht noch ne gute funktion wäre, mit der man das erweitern kann

S
16 Beiträge seit 2008
vor 15 Jahren

Könntest du es nochmal hochladen? Wäre sehr nett

MDCoke Themenstarter:in
109 Beiträge seit 2008
vor 15 Jahren

ja, das programm befindet sich jetz in dem status wo es zu ca. 20% fertig ist, morgen lade ich die neue version hoch! die fehler die bekannt sind, sind beseitigt und einige neue funktionen hab ich gerade eingebaut!

MDCoke Themenstarter:in
109 Beiträge seit 2008
vor 15 Jahren

soooooooooooooo:

Mein Chatprogramm geht in die nächste Version!

Verbesserungen:

  • Bekannte Fehler beseitigt
  • Wenn kein Anzeigebild ausgewählt wurde, sendet das Programm automatisch ein schwarzes Bild
  • Performanceverbesserungen, (Grafik deutlich beschleunigt)

Und nun auch eine brandneue Funktion:

Der Server/Client mit dem ihr euch verbunden habt, kann nun Befehle empfangen, zurzeit 4 Befehle!

Die Befehle sind:
Befehl;Ping (Pingt den anderen Rechner an, ob dieser noch verbunden ist)
Befehl;Start;Datei (Öffnet eine Datei/Programm auf dem anderen Rechner)
Befehl;Start;http://www.google.de (Öffnet bspw. google bei dem anderen Rechner)
Befehl;Erstellen;C:/Datei.x (Erstellt Datei.x bei dem anderen Rechner)
Befehl;Löschen;C:/Datei.x (Löscht Datei.x bei dem anderen Rechner)

Bei den letzten beiden Funktionen ist zur Sicherheit noch eine Checkbox hinzugefügt wurden, um nicht unerlaubt Dateien zu löschen oder zu erstellen!

So runterladen könnt ihr euch es hier: http://www.loaditup.de/289494.html

Verbesserungsvorschläge und Kritik erwünscht, auch wie es euch gefällt!

Y
78 Beiträge seit 2007
vor 15 Jahren

Schickes Design, sieht recht gut aus.
Aber habe 2 Fragen:
1.) Ist es Multi-user-fähig? (Gehe ich von aus, aber kanns hier nicht testen)
2.) Könntest du den Sourcecode uppen, habe genau das gleiche als jahresarbeit und bräuchte paar Anregungen (Keine Sorge, kein 1:1 kopieren)

Icq: 201599054

110 Beiträge seit 2008
vor 15 Jahren
MDCoke Themenstarter:in
109 Beiträge seit 2008
vor 15 Jahren

@YpsilonZet: Mutliclientfähig hab ich es noch nicht gemacht, werd ich in der nächsten version nachholen (is ja nicht schwer)...

zu dem sourcecode kann ich dir nur sagen, dass de dich dort nich zurechtfinden wirst, da das programm größer ist als man sich denken kann...allein die Server klasse hat schon mehr als 1000zeilen code! ich kann dir natürlich die codes schicken wie ich Nachrichten und Dateien sende/empfange oder wie ich die Verbindung aufbaue!

und übrigens, ich mach das auch als jahresarbeit, will es aber soweit ausbauen, dass es vielleicht sogar bissel bekannter werden kann!

630 Beiträge seit 2007
vor 15 Jahren

Hallo MDCoke,

also so Funktion wie das von löschen von Dateien auf einem anderen Rechner würde ich wieder rausnehmen. Ich würde mich als Benutzer weigern eine Anwendung mit solchen Fähigkeiten zu nutzen.

Gruss
tscherno

To understand recursion you must first understand recursion

http://www.ilja-neumann.com
C# Gruppe bei last.fm

MDCoke Themenstarter:in
109 Beiträge seit 2008
vor 15 Jahren

okay danke für den hinweis, das nehm ich sofort raus! aber das starten von anderen anwendungen wie bspw. html seiten kann ich drin lassen oder erstellen von dateien?

3.971 Beiträge seit 2006
vor 15 Jahren

Such mal auf Codeproject oder allgemein bei Google nach WCF Chat. Dort gibts sehr gute Beispiele, die dir bestimmt auch gefallen.

Es gibt 3 Arten von Menschen, die die bis 3 zählen können und die, die es nicht können...

49.485 Beiträge seit 2005
vor 15 Jahren

Hallo MDCoke,

aber das starten von anderen anwendungen wie bspw. html seiten kann ich drin lassen oder erstellen von dateien?

für einen kleinen Benutzerkreis wären solche Funktionen vielleicht interessant, aber das dadurch entstehende Sicherheitsrisiko ist so groß, dass dein Programm für die meisten Benutzer mehr als unattraktiv werden würde.

herbivore

110 Beiträge seit 2008
vor 15 Jahren

Eventuell kannst du ja einbauen, dass man den anderen erst berechtigen muss, damit er es darf.

49.485 Beiträge seit 2005
vor 15 Jahren

Hallo Aurion,

wobei eine Funktion, die nicht vorhanden ist, sicher ist, als eine Funktion, die "nur" geschützt ist und deren Schutz man u.U. aushebeln kann. Gut, mag sein, dass meine persönliche Paranoia gerade auf sowas besondern anspringt.

herbivore

L
78 Beiträge seit 2008
vor 15 Jahren

Sehe ich ähnlich, außerdem sehe ich gerade keinen Sinn in der Funktion.

Das Dateierstellen könntest du akzeptabler machen in dem du eine Funktion zum senden von Dateien einbaust. Ähnlich wie bei ICQ und MSN oder sonst wo.

Und wofür die Funktion zum öffnen? Da würde ich es lieber so machen, dass Internetlinks einfach als solche im Chatfenster angezeigt werden und dann braucht man nur noch draufklicken.

MDCoke Themenstarter:in
109 Beiträge seit 2008
vor 15 Jahren

naja die funktionen zum öffnen/erstellen/löschen von dateien hab ich deswegen eingebaut, damit der lehrer die kontrolle über das netzwerk behält... es ist nicht für einen größeren benutzerkreis sondern nur für die schule gedacht, daher gibt es dort auch kein sicherheitsrisiko! ich denke, ich werde dieses programm dann auch so lassen, wie es jetzt ist, da es nur als jahresarbeit gedacht ist und ich eine idee für eine neue software habe!

T
3 Beiträge seit 2008
vor 15 Jahren

Sehr schönes tool.

Gut wäre noch, das man mit der Enter taste senden kann und das die untere textBox scih den lärt!

MDCoke Themenstarter:in
109 Beiträge seit 2008
vor 15 Jahren

danke schön! werd ich mit einfügen!

MDCoke Themenstarter:in
109 Beiträge seit 2008
vor 15 Jahren

so für YpsilonZet der ja den Sourcecode wollte, hier ist der Code zum verschicken von Nachrichten/bzw. zum empfangen:

[CSHARP] public  void NachrichtSenden(EDateityp Datentyp, byte[] Daten, NetworkStream Datenstrom)
            {
                byte[] DateiTyp = new byte[1024];

                if (Datentyp == EDateityp.Nachricht)
                {
                    DateiTyp = Encoding.UTF32.GetBytes("BefehlNachricht");
                }
                if (Datentyp == EDateityp.Text)
                {
                    DateiTyp = Encoding.UTF32.GetBytes("BefehlText");
                }

                Datenstrom.Write(DateiTyp, 0, DateiTyp.Length);
                Thread.Sleep(200);
                Datenstrom.Write(Daten, 0, Daten.Length);
            }[/CSHARP]

In der Funktion kann angegeben werden ob es eine nachricht ist oder ein Text, Text bedeutet, dass der Text gleich gespeichert wird als textdatei bei dem anderen rechner... ich verwende bei dem programm meistens den Dateityp Nachricht! so dann muss der NetworkStream benutzt werden um die Bytes der nachricht in den "Netzwerkfluss" zu schreiben und dann ist die Nachricht im besten fall beim anderen 😉

so dann noch die Funktion zum empfangen von nachrichten, dazu hab ich noch einen timer benutzt (den ich in der pschat.dll mit eingebaut hab), welcher in einem gewissen takt den NetworkStream auf neue Daten überprüft:

[CSHARP]
if (Datenstrom.DataAvailable)
                    {

                        if (Dateityp == psChatNachricht.EDateityp.Keine)
                        {
                            byte[] ZuLesendeDaten = new byte[Client.Available];
                            Datenstrom.Read(ZuLesendeDaten, 0, Client.Available);
                            string Text = Encoding.UTF32.GetString(ZuLesendeDaten);
                            if (Text == "BefehlNachricht")
                            {
                                Dateityp = psChatNachricht.EDateityp.Nachricht;
                            }
//Dazwischen kommt eigntlich noch einiges an Code ;)

else if (Dateityp == psChatNachricht.EDateityp.Nachricht)
                        {
                            byte[] ZuLesendeDaten = new byte[Client.Available];
                            Datenstrom.Read(ZuLesendeDaten, 0, Client.Available);
                            string Text = Encoding.UTF32.GetString(ZuLesendeDaten);
                            EmpfangeneNachricht = Text;
                            //Hier wird das Ereignis ausgelöst, damit der benutzer den text
                            //anzeigen kann
                            OnNachrichtEmpfangen(EmpfangeneNachricht);
                            Verlauf += "\r\n" + EmpfangeneNachricht;
                            Dateityp = psChatNachricht.EDateityp.Keine;
                        }[/CSHARP]

Also wenn Daten da sind, dann wird überprüft ob schon ein Datentyp vorhanden ist wenn nicht wird er auf Nachricht gesetzt und dann wird die Nachricht empfangen bei dem else if block!

MDCoke Themenstarter:in
109 Beiträge seit 2008
vor 15 Jahren

so eine neue version meiner software:

Verbesserungen:

  • Enter-Taste lässt Nachricht verschicken
  • die F1 Taste Dateien
  • Es wurde eine Funktion "Verbinden simulieren" hinzugefügt, mit der man sich zu seinem eigenen PC verbinden kann

Download: http://www.loaditup.de/293794.html

MDCoke Themenstarter:in
109 Beiträge seit 2008
vor 15 Jahren

Hallo Community, eine weitere neue Version:

Verbesserungen:

  • Verbessertes Fehlerhandling
  • Textbox Aussehen verändert

Download hier: http://www.loaditup.de/298396.html

MDCoke Themenstarter:in
109 Beiträge seit 2008
vor 15 Jahren

So und dazu noch ein bildchen^^