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
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
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
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!
soooooooooooooo:
Mein Chatprogramm geht in die nächste Version!
Verbesserungen:
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!
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
@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!
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
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?
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...
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
Eventuell kannst du ja einbauen, dass man den anderen erst berechtigen muss, damit er es darf.
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
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.
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!
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!
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!
so eine neue version meiner software:
Verbesserungen:
Download: http://www.loaditup.de/293794.html
Hallo Community, eine weitere neue Version:
Verbesserungen:
Download hier: http://www.loaditup.de/298396.html