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

  • »
  • Portal
  • |
  • Mitglieder
Beiträge von alf468
Thema: Dateiübertragung
Am im Forum: Netzwerktechnologien

Erst einmal ein frohes Neues Jahr an alle.

Ich versuche mich gerade an der Dateiübertragung übers Netzwerk. Der Server kann mehrere Client Verbindungen speichern und verarbeiten. Eigentlich ist der Server eine Art Chatserver. Der Client verbindet sich und der Stream wird in einer Hashtable gespeichert. Eine Schleife durchläuft dann immer die Hashtable und führt die entsprechenden Aufgaben aus. Als kleines Feature wollte ich die Dateiübertragung hinzufügen.
Nun könnte es aber auch sein das mehrere Clients gleichzeitig Daten empfangen bzw. senden. Der Server bekommt erst einmal eine Info das eine Dateiübertragung gestartet wird. Da ich für die Dateiübertragung keinen neuen Port benutzen will sondern die bereits vorhandene Verbindung kam ich auf die Idee einen neuen Thread zu starten. Dieser Thread soll dann die Dateiübertragung durchführen. Es hätte also jeder Client für die Dateiübertragung einen eigen Thread. Das Problem ist aber wenn der Client nun unerwartet die Verbindung beendet. So wie ich das mit der Dateiübertragung gelöst habe wartet der Server immer auf Daten ohne ein Timeout.

protected override void Transfer(System.Net.Sockets.NetworkStream ns)
        {
            this.tns = ns;
            this._TransferThread = new System.Threading.Thread(new System.Threading.ThreadStart(Startransfer));
            this._TransferThread.Start(); //Dateiübertragung beginnen
        }

private void Startransfer()
        {
            Stream fileStream=null;
            try
            {
                int offset = 0;
                int size = 1024;
                byte[] buffer = new byte[size];
                long bytesRead = 0;
                string file = ((FileTransferObject)this._openTransfers[tns]).getName;
                int fsize = ((FileTransferObject)this._openTransfers[tns]).getSize;
                int start = ((FileTransferObject)this._openTransfers[tns]).getStart;
                this._openTransfers[tns] = null;
                if (start != 0)
                {
                    fileStream = new System.IO.FileStream(rootpath + "\\" + file, FileMode.Append);
                    //fileStream.Seek(start, SeekOrigin.Begin);
                    bytesRead = start;
                }
                else
                {
                    fileStream = new System.IO.FileStream(rootpath + "\\" + file, FileMode.Create);
                }
                do
                {
                    if (fsize - bytesRead < size)
                    {
                        size = (int)(fsize - bytesRead);
                    }
		    bytesReadOld = bytesRead;
                    bytesRead += this.tns.Read(buffer, 0, size);
                    fileStream.Write(buffer, 0, (int)(bytesRead - bytesReadOld));
                   
                    offset += size;

                } while (tns.CanRead && bytesRead < fsize);
                fileStream.Close();
                this._openTransfers.Remove(tns);
                this._TransferThread.Join();
                this._TransferThread = null;
            }
            catch (Exception e)
            {
                if (fileStream != null)
                    fileStream.Close();
                System.Diagnostics.Debug.WriteLine(e);
                this.RemoveClient(tns);
                this._TransferThread.Join();
                this._TransferThread = null;
            }
        }
 


Wenn der Client nun die Verbindung beendet, bleibt der Server in der Schleife obwohl nix mehr gelesen werden kann.
Warum merkt der Server in dem Moment nicht das er gar nicht mehr lesen kann ?
Das ganze funktioniert im Moment auch nur für einen Client aber ich wäre die Threads dann in einer Hashtable speichern. Ist das eine halbwegs gute Lösung ?

Thema: Parser für BBcode?
Am im Forum: Basistechnologien und allgemeine .NET-Klassen

Ich verzweifle da noch dran.

Zitat
mit m.Index und m.Length von zwei aufeinanderfolgenden Matches, kannst du nicht nur das Tag, sondern auch den Text zwischen den Tags ausschneiden ... und eben wieder zusammenbasteln.
Dies kann ich doch nur machen wenn ich vorher alle nicht geschlossene bzw. nicht geöffnete Tags entfernt habe.

Thema: Parser für BBcode?
Am im Forum: Basistechnologien und allgemeine .NET-Klassen

Ich muss das ganze aber doch nach dem Umwandeln wieder in den Text einfügen.
In dem Moment verändere ich doch den Index

Thema: Parser für BBcode?
Am im Forum: Basistechnologien und allgemeine .NET-Klassen

Kann sein das ich mich jetzt total dumm anstelle aber irgendwie verstehe ich das nicht.
Ich habe den Index und die Länge vom Start- und Endtag. Damit kann ich ohne Probleme die Tags umwandeln aber wie bekomme ich das wieder in den Text ?

Thema: Parser für BBcode?
Am im Forum: Basistechnologien und allgemeine .NET-Klassen

Aber dann müsste ich den Index einmal verändern und alle weiteren Tags würden nicht mehr passen.

Wenn das Programm in der m.Success Schleife ist und bei einem gefundenen Paar eine Änderung an dem original String vorgenommen wird stimmt doch der Index für die anderen Tags nicht mehr.

Thema: Parser für BBcode?
Am im Forum: Basistechnologien und allgemeine .NET-Klassen

Wenn ich das habe kann ich ja mit string.Replace(..) die Tags umwandeln.
Aber ich möchte ganz gerne auch die Code Tags verwenden und in innerhalb von Code darf der BBCode nicht umgewandelt werden.
Wie kann ich da am besten vorgehen ?

Thema: Parser für BBcode?
Am im Forum: Basistechnologien und allgemeine .NET-Klassen

Sicher du hast das schon klar beschrieben aber irgendwie geht das bei mir nicht so richtig.

string str = " [bold] jjkljk [/bold]";
            string patt = @" (?<bbtag>\[\s*(?<close>)\\?\s*(?<tagname>)[a-zA-Z]+)(?<attribute>[^\]]+?)\s*\] ";
            Regex r = new Regex(patt, RegexOptions.IgnoreCase);

            Match m = r.Match(str);
            while (m.Success)
            {
                Console.WriteLine(m.Groups["tagname"].ToString());
                m = m.NextMatch();
            }
            Console.ReadLine();

Es wird da schon nix ausgegeben

Thema: Parser für BBcode?
Am im Forum: Basistechnologien und allgemeine .NET-Klassen

Irgendwie verstehe ich die Geschichte mit RegEx nicht richtig X(

Wäre nett wenn du mal ein kleines Beispiel machen könntest

Thema: Webseite aktualisieren
Am im Forum: Web-Technologien

Ich glaube mein Problem liegt noch an einer anderen Stelle. Ich kann aus einem Thread, nachdem die Seite geladen wurde, nicht mehr auf die TextBox zugreifen.
Es kommt keine Fehlermeldung aber es wird nicht mehr geschrieben.Eine Ausgabe auf der Console zeigt aber das noch Daten empfangen werden.

Gibt es ASP.NET kein invoke oder gibt es alternative zu Threading ?

Thema: Webseite aktualisieren
Am im Forum: Web-Technologien

Erst einmal Danke für die Antworten.
Ich denke Atlas (AJAX nur von MS) ist schon schon das richtige. Um es mal ein bischen genauer zu machen ich möchte ein IRC Webchat programmieren.
Wenn der User sich einloggt wir eine Verbindung zum IRC hergestellt.Das ganze Netzwerkverfahren läuft als Thread nebenher.

Auf der Seite http://atlas.asp.net/docs/Default.aspx gibt es einige Beispiel nur leider keines wie ich es brauche. Es muss in die TextBox jederzeit was eingetragen werden können oder die Seite zu aktualisieren.

Thema: Webseite aktualisieren
Am im Forum: Web-Technologien

Ich will eine Art Webchat programmieren.Es kann immer ein User eine Nachricht schreiben. Die Webseite müsste nie aufhören zu laden ?!

Thema: Webseite aktualisieren
Am im Forum: Web-Technologien

Ich möchte gerne eine ASP.NET Webseite erstellen. Diese Seite empfängt Daten über ein Socket.Soweit ist auch alles OK nur wie füge dann den empfangenen Text in eine Textbox hinzu wenn die Seite schon geladen ist ?


Danke

Thema: Objekte in XML schreiben
Am im Forum: Datentechnologien

Du musst der Klasse auch das Attribut Serializable() mitgeben.

Thema: Windows Form Textfeld Drucken
Am im Forum: Rund um die Programmierung

Falls du noch keine Lösung hast, dann schau mal hier Drucken eines Controls????

Thema: Control wird von einem anderen Thread aufgerufen?
Am im Forum: Basistechnologien und allgemeine .NET-Klassen

Hallo ich habe eine kleines Problem.Ich will ein Item in einer Listbox einfügen.
Dabei kommt folgender Fehler:
System.InvalidOperationException: Invoke or BeginInvoke cannot be called on a control until the window handle has been created.

Die Listbox ist static hat das Problem damit was zu tun ?
Das ist das erste Mal das ich damit Probleme habe

Thema: Drucken eines Controls?
Am im Forum: Rund um die Programmierung

In .NET 2.0 gibt die Methode Control.DrawToBitmap .Damit kann man auch ganz einfach ein Control drucken.
Beispiel:

Bitmap b=new Bitmap(this.textBox1.Width,this.textBox1.Height);
this.textBox1.DrawToBitmap(b, e.PageBounds);
e.Graphics.DrawImage(b, new Point(15, 50));

Thema: Bild in Oracle DB
Am im Forum: Datentechnologien

Ich habe ein Bild welches ich in einer Oracle Datenbank speichern möchte.
Ich benutze dazu die Methode FromBase64String().Nur gibt es in Oracle offenbar kein Datentyp der diese Größe unterstüzt.

Gibt es eine andere Möglichkeit oder gibt es doch einen Oracle Datentyp für so was ?

Thema: irc client selber schreiben
Am im Forum: Web-Technologien

Wie hast du das Anmeldeproblem den jetzt gelöst? Wenn ich das in der Reihenfolge wie Programmierhans meinte kommt bei NICKSERV identify nick 123456 die Meldung vom IRC: "451 NICKSERV :You have not registered"

Thema: Graphics
Am im Forum: Grafik und Sound

Ändert aber nix an meinem Problem.Ich will den Kreis verschieben per Tastendruck.Wenn der Kreis ganz Rechts ist soll ein weiterer Kreis gezeichnet werden.Der alte Kreis soll aber dableiben.

Thema: Graphics
Am im Forum: Grafik und Sound

Ich möchte gerne einen Kreis zeichnen und dieses mit den Tasten bewegen.Ist soweit auch alles kein Problem nur wenn ich später einen zweiten Kreis hinzufüge ist der erste wieder weg.

        private void Form1_KeyDown(object sender, KeyEventArgs e)
        {
            if (e.KeyData == Keys.Right)
            {
                this.Refresh();
                x+=10;
                g.FillEllipse(b, this.x, this.y, 20, 20);
            }
        }
Die Methode refresh() ist sicher nicht die richtitge für sowas.Aber wie macht man sowas?

Thema: Diagramm erstellen
Am im Forum: Basistechnologien und allgemeine .NET-Klassen

Danke für die zahlreichen Antworten.Ich kann also die dll-Datei in meinem kommerziell Programm benutzen, muss aber darauf Hinweisen das die dll. nicht von mir ist ?!

Thema: Diagramm erstellen
Am im Forum: Basistechnologien und allgemeine .NET-Klassen

Ich habe jetzt mal versucht was zu LGPL und kommerziellen Einsatz zu finden, aber irgendwie finde ich nix dazu.Wenn sich da einer besser auskennt das würde mich das interessieren.

Thema: Diagramm erstellen
Am im Forum: Basistechnologien und allgemeine .NET-Klassen

ZedGraph ist aber doch nicht für kommerzieller Software ?!

Thema: Diagramm erstellen
Am im Forum: Basistechnologien und allgemeine .NET-Klassen

Das Programm ist aber für kommerzielle Zwecke gedacht.Ich kann also kein Open-Source verwenden.

Thema: Diagramm erstellen
Am im Forum: Basistechnologien und allgemeine .NET-Klassen

Ich möchte keinen Quellcode haben sondern viel mehr wie man so was am besten berechnen kann. Das Zeichnen ist ja nicht das Problem.

Thema: Diagramm erstellen
Am im Forum: Basistechnologien und allgemeine .NET-Klassen

Ich würde gerne ein kleines Diagramm selber machen. Dieses Diagramm soll den Aktienkurs mehrerer Aktien in einer Woche anzeigen. Also eine Gerade welche von den Aktienwert an einem Tag zum nächsten verläuft. Wie man es halt von der Börse kennt .Ich möchte dies ganze aber gerne so individuell wie nur möglich machen.
Die Anzahl der Tage sind frei wählbar, die Anzahl der Aktien.Die Größe der Y-Achse muss natürlich auch variable sein.Der User gibt also die Werte der Aktien pro Tag ein und das Diagramm soll sich automatisch erstellen.
Wie kann ich so was machen ? Ich möchte keinen Quellcode haben sondern viel mehr wie man so was am besten berechnen kann.

Thema: CenterParent
Am im Forum: GUI: Windows-Forms

Zitat
Original von herbivore
Hallo alf468,

warum zwei Forms machen und nicht einfach den Statusbar mit in das Login-Form packen?

herbivore

Es kommen ja noch viel mehr Forms dazu.Ausserdem passt dies am besten zu meiner Struktur der Klassen.

Thema: CenterParent
Am im Forum: GUI: Windows-Forms

Ich glaube ich erkläre mal an einem Beispiel worum es mir bei der ganzen Sache geht.Ich habe eine Login Form und beim klicken auf ein Button werden die eingegeben Daten per Socket an ein Server gesendet, der wiederum die Daten kontrolliert. Während diesem Vorgang will ich ein Fenster anzeigen lassen mit einem Label und einer ProgessBar.Das Statusfenster soll in das Loginfenster ganz überdecken und die ProgessBar +Label soll mittig angezeigt werden.

Zitat
Aber es ist ja auch ganz leicht die Zentrierungsposition selbst auszurechnen.

Bei meinen Rechnungen klappte das nie X(

Thema: CenterParent
Am im Forum: GUI: Windows-Forms

Also Form2 wird in Form1 angezeigt nur eben nicht zentriert.Das sieht so aus:


Ob ich StartPosition im Konstruktor übergebe spielt keine Rolle.Das übergeordnete Fenster übergebe ich auch. Also entweder ich verstehe den Sinn von CenterParent falsch oder ich mache was falsch .

Thema: CenterParent
Am im Forum: GUI: Windows-Forms

Ne es ist kein MDI-Child.Also in Form2 habe ich folgendes stehen:

public void parent(Control c)
{
     this.TopLevel = false;
     this.Parent = c;
     this.StartPosition = FormStartPosition.CenterParent;
}

Dazu die Standart einstellugen vom Form Designer.

In Form1 wird Form2 aufgerufen:

Form2 f= new Form2();
f.parent(this);
f.Visible=true;