Laden...

Forenbeiträge von bl4ckY Ingesamt 193 Beiträge

26.11.2009 - 15:42 Uhr

Es hat aber keiner ein kleines Beispiel?

Jack3 von dir habe ich ja den Tipp. Du meintest ich soll eine Sammelqueue bauen und von dort ueber einen weiteren Thread an die jeweiligen Jobqueue der Client verteilen. Nun steh ich vor dem Problem das ich nicht weiss wie ich die JobQueue so baue das sie dem Client eindeutig zuweisbar ist. Im Prinzip müsste ich es über den Namen machen nur wie?

26.11.2009 - 14:45 Uhr

Hallo,

habe leider weder beim googlen noch hier im Forum durch die Suche ein vernünftiges Beispiel gefunden. Hat vielleicht irgendeiner ein Artikel o.ä zum Thema Jobs/JobQueue.

hier ist ein Beispiel.

Habe hier aber noch das Problem das ich einfach nicht verstehen will wo der Code vom Job ausgeführt wird?

Mein Vorhaben: Ich will das ein Server eine JobQueue durchläuft und bestimmte Sachen an bestimmte Clients sendet. Zwischenspeichern wollte ich den ClientNamen (daraus leite ich die IP ab) und das zu sende Zeug.

Wie soll ich das realisieren?

Am schönsten wäre noch ein weiteres verständliches Beispiel. Aber ich finde einfach keins.

17.11.2009 - 13:21 Uhr

Jo das hört sich so an als könnte es funktionieren 😉

Dank dir.

17.11.2009 - 13:11 Uhr

Hallo,

Mein Server schafft die Anfragen nicht. Bisher sieht das Konzept folgendermaßen aus.

Clients melden sich am Server an. Andere Anwendungen schicken Strings an den Server dieser soll dann die Daten aus den Strings (idr Bilder) an den jeweils passenden Client schicken.

Funktioniert auch soweit. Es sei denn die externen Anwendungen schicken zu schnell Strings. Dann macht der Server für kurze Zeit garnichts.

Ich erstelle für jedes Externe einen neuen Thread der die Daten dann los schickt. Das problem ist anscheinend das mehrere Thread gleichzeitig versuchen Daten an einen Client zu schicken. Folglich kommen die Daten nicht ordentlich an.

Meine Frage:

Soll ich pro Client nur einen Thread erstellen und dieser ist dann der einzige mit Berechtigungen mit dem Client zu kommunizieren? Wenn ja wie reiche in Daten an einen laufenden Thread weiter?

Kann man das Problem mit einem Mutex lösen so das die anderen Threads so lange warten bis der Stream frei ist?

Kann man Methoden sagen das sie nur maximal einmal aufgerufen werden dürfen? Ähnlich wie bei den Backgroundworkern das man abfragt ob die Methode Busy ist?

Andere Vorschläge?

Danke im Vorraus

11.11.2009 - 11:09 Uhr

ui das funzt. Dank dir.

Kann ja auch keiner Ahnen das man da mit Indexen arbeiten kann 😉

Supi Danke

11.11.2009 - 11:06 Uhr

Jo will ich schon aber das macht die Funktion nicht 😕

Meine Funktion durchlaeuft alle Tabs und fragt ab ob der Name dem Namen in der Variable fileName entspricht.

Deine Funktion fragt so lange die Schleife laeuft den Namen des angewählten Tabs gegen den Variableninhalt ab.. z.b

Erster Durchlauf: If(4=3)
Zweiter Durchlauf: if(4=3)

im Endeffekt fragt er immer wieder das gleiche ab. So sagt es zumindest der Debugger, weil ja kein anderes Tab angewählt wird.

11.11.2009 - 10:57 Uhr

hm ne geht leider nicht. So hat er ja in tabControl1.SelectedTab.Name nur das angewählte Tab 😦

11.11.2009 - 10:42 Uhr

Hallo,

habe ein Problem. In meinem Programm hat man die Möglichkeit mehrere TabPage (unendlich) zu öffnen. Darin sind Bilder zu sehen. Jedes Bild soll aber nur genau einmal geöffnet werden können d.h ich habe den TabPages die gleichen Namen gegeben wie die der Bilder.

Nun wollte ich mit eine Schleife jeweils den Namen prüfen und falls der Name identisch ist soll das Tab angewählt werden. Problem ist, dass er immer jedes Tab anwählt. Ihr könnt euch vielleicht vorstellen das, dass einige Zeit dauert.

Gibt es da einen Weg das zu umgehen?

private void InvokeSelectTab(string FileName)
        {
            if (this.InvokeRequired)
                this.Invoke(new PageInvoke(InvokeSelectTab), new object[] {FileName });
            else
            {
                tabControl1.Enabled = false;
                for (int i = 0; i < tabControl1.TabPages.Count; i++)
                {     
                    tabControl1.SelectedIndex = i;
                    if (tabControl1.SelectedTab.Name == FileName)
                    {
                        tabControl1.Enabled = true;
                        break;
                    }
                }
            }
        }

Nicht über den Invoke wundern. Das muss durch die Programmkonstruktion aus einem BackgroundWorker aufgerufen werden.

P.S Das Enable ist nur Testweise drinne. Hoffte so wird das tabControl gelockt und somit die Bildschirmausgabe unterdrückt aber hat nicht funktioniert 😉

Hoffe jemand hat eine gute Idee 😉

Danke im Vorraus

03.11.2009 - 12:35 Uhr

Ah super danke haette ich auch selber drauf kommen koennen.

03.11.2009 - 11:36 Uhr

Hi,

ich habe ausversehen eine TabPage aus meiner TabControl gelöscht. Wollte sie dann einfach wieder herstellen mit Strg+Y.

Tja die TabPage ist wieder da aber wohin sind die Controls die darauf waren?

Die Eigenschaften der Controls sind noch da also müssen doch auch noch irgendwo die Controls aufzufinden sein.

In Ansicht->Weitere Fenster-> Dokumentgliederung sind sie leider nicht drinne.

Gibt es irgendwie einen Weg einem neuen Control den gleichen Namen zugeben ohne das VS meckert.

Danke im Vorraus

29.10.2009 - 15:31 Uhr

Hi,

Folgendes Problem:

Ich habe eine Clientanwendung die Bilder von einem Server empfängt. Bei jedem neuen Bild will ich ein neues TabPage öffnen (ähnlich wie im FF aber eben mit Bildern 😉 )

Nun stehe ich aber vor dem Problem wie ich das mit der Picturebox sinnvoll handle?
Als erstes habe ich in VB6 gedacht wo man ja ohne weiteres mit Indexen arbeiten konnte aber das ist ja in VS08 Vergangenheit.

Irgendjemand eine Idee ?

27.10.2009 - 08:28 Uhr

Bisher keiner mit gearbeitet?

22.10.2009 - 08:32 Uhr

verwendetes Datenbanksystem: Ldap

Hi,

habe ein Problem und zwar habe ich ein Programm entwickelt in dem man seine Daten (ähnlich der Suche nach Personen von Windows) verändern/ergänzen kann. Wir haben hier ein Exchange2007 Server der sich mit dem Ldap Directory abgleicht.

Nun habe ich aber das Problem das im Outlook2007 zig Kontaktmöglichkeiten gegeben sind u.a "Weitere" und "Texttelefon". Wie liest Exchange diese Daten aus und haben all diese Sachen auch ein Ldap Attributsnamen?

Bisher habe ich gefunden:

mobile
mail
facsimileTelephoneNumber
homePhone
telephoneNumber
pager
otherhomePhone

Wobei Fax (facsimileTelephoneNumber) im Outlook unter "weitere Faxnummer" geführt wird und nicht unter "Fax". Bin von Outlook2007 überhaupt nicht begeistert und kämpfe fast jeden Tag mit einem weiteren Bug aber irgendwas müssen sich die Entwickler doch dabei gedacht haben. HomePhone (für mich Privatnummer) ist im Outlook2007 die Rufnummer aus dem Betrieb. Wirklich eigenartig.

Hat vielleicht irgendeiner eine Liste wie die ganzen Kontaktmöglichkeiten im AD heissen oder wurde das irgendwie anderweitig implementiert?

Danke 😉

21.10.2009 - 08:27 Uhr

Also ich habe die Programmstruktur jetzt nochmals geändert. Funktioniert auch alles prächtig. Es sei denn ein Client wird geschlossen, neu geöffnet und man veruscht dann ein Bild zu empfangen.

Die Clientdaten speicher ich in einem ListArray zwischen. Nun bräuchte ich eine Möglichkeit zu kontrollieren, ob die Clients noch da sind. Kann man irgendwie eine Broadcast ins Netz jagen und die betroffenen Clients antworten dann?

B.z.w senden die Clients irgendetwas an den Server wenn sie die Verbindung beenden?

Edit: Frage ist überfällig. Sorry (Erst Denken - dann Posten) 😃

16.10.2009 - 13:54 Uhr

Also zwischen AnzeigeClient-Thread und dem eigentlichen Client ist Totenstille bis ein neues Bild geschickt werden muss. Allerdings sehe ich allmählich ein, dass es absoluter Schwachsinn ist einen Thread am leben zu erhalten der nicht dauerhaft arbeitet.

Ist es Sinnvoll ein DataTable mit AnzeigeClient-Username und den Verbindungsdaten
zu speichern und den eigentlichen Versand auch im BearbeitungsClientThread zu Handlen?

Gut das ich hier gefragt habe meine komplette Programmstruktur kommt mir jetzt seltsam vor 😉

Damit wäre dann auch sofort mein Problem der Zwischenspeicherung umgangen.

16.10.2009 - 10:52 Uhr

Natürlich bin ich am rum basteln sonst würde ich keinen Thema im Forum eröffnen.
Ich denke das Grundkonzept so wie ich es habe funktioniert ohne weiteres.

Eigentlich brauche ich nur eine Möglichkeit einem Thread im laufenden Betrieb eine Variable zu übergeben oder eben eine Art Tunnel zwischen beiden um einen Datenaustausch zwischen den Threads zu Gewährleisten.

16.10.2009 - 08:42 Uhr

Guten Morgen,

Systembeschreibung:

Geht davon aus es handelt sich um Fahrzeugscheine. Die Fahrzeugscheine werden von einem System eingescannt und die eingetragenen Daten automatisch erkannt. Diese werden wiederrum in einer Datei gespeichert und können im Bearbeitungsclient angeschaut b.z.w angepasst/verändert werden. Zu der nun erstellten Datei werden ebenfalls die eingescannten Fahrzeugscheine als Bilddatei gespeichert um diese evtl bei falsch eingescannten Daten nochmals anzuschauen und im Bearbeitungsclient zu korrigeren. Wenn also nun im Bearbeitungsclient eine Taste gedrückt wird soll im Anzeigeclient das passende Bild zu denen im Bearbeitungsclient aufgerufenen Daten geladen werden. Mehr soll nicht passieren 😃

Die Kommunikation erfolgt über Sockets.

Ja es sind unterschiedliche Anwendungen. Aber auf die eine habe ich keinen Zugriff und kann diese nicht verändern.

Was ist denn daran verkehrt für jeden Client einen neuen Thread zu erstellen?
Habe mir vorher extra Beispiele angeschaut und da wurde es überall so gemacht.

15.10.2009 - 16:39 Uhr

Ich erstellt pro Client ein Thread. In dem aber andere Methoden aufgerufen werden.
Threads erstelle ich damit der Server bei der Bearbeitung nicht freezed. Da die Clients/Threads länger nach dem Login warten bis sie evtl. ein Bild bekommen.
Ich benutze nur ein Threads zum Verschicken aber auch einen um den String zu empfangen.

Vielleicht wirds mit einem Bild deutlicher:

Für jeden Client egal ob Anzeige oder Bearbeitungsclient wird ein neuen Thread erstellt damit der Server nicht freezed. Zwischen den Clients besteht eine Beziehung die über eine Datenbank realisiert wurde. Dort sind einmal der Windowsanmeldename und der Bearbeitungsclient LoginName hinterlegt.

Mein Problem: Ich kann dem AnzeigeClient/Bearbeitungsclient nicht sagen zu welchem Client er gehört damit er die richtigen Daten empfängt.

Deswegen hatte ich es zuvor über eine Datei geregelt weil man der Datei einen Namen geben kann der eindeutig für den Bearbeitungsclient ist (Windowsanmeldename).

Nun suche ich ein Objekt das die gleichen Eigenschaften bietet aber evtl sogar ein paralelles Arbeiten ermöglicht.

15.10.2009 - 14:34 Uhr

Gut also mal von ganz vorn 😃

Ich habe ein Client Server System. Der Server verwaltet Bilder.

Dann habe ich einmal einen AnzeigeClient (Client a) dieser macht nichts weiter als die Bilder die er bekommt anzuzeigen. Der andere Client (Client b) hat Informationen zu diesen Bildern. Wenn in Client b ein Tastenkürzel gedrückt wird, wird ein String generiert der u.a den Anmeldenamen von Client b und das notwendige Bild enthält.
Das ganze schickt er dann an den Server. Damit der Server nicht so lange darum krebst starte ich da einen Thread, somit kann er weitere Clients annehmen.

In der zwischen Zeit können sich ganz viele Clients a (AnzeigeClient) auf dem Server anmelden und bekommen alle einen Thread.

Thread b (Client b) schaut nun an wen das Bild soll, sucht in der Benutzerdatenbank einmal nach dem Client a Anmeldenamen und dann noch nach Client b Anmeldename

Und nun kommt die Ecke an der ich nicht weiter weiss. Eigentlich müsste ich diese beiden Threads jetzt zusammen führen. Das ganze hatte ich mit einer Datei gelöst die genauso heisst wie der AnmeldeName von Client a. Thread a (Client a) hat also in der Ruhephase nichts anderes gemacht als geschaut ob eine Datei mit seinem Namen da ist. Da gab es allerdings immer wieder Exception die ich nicht unter Kontrolle bekommen habe. Also suche ich jetzt eine Alternative.

Denke das sollte das ganze etwas deutlicher machen.
Also grob gesagt: Ich erstelle für alles was sich mit dem Server verbindet einen neuen Thread.

Ich wette die Lösung ist mehr als simpel aber ich "verkompliziere" das ganze einfach nur 😉

15.10.2009 - 13:23 Uhr

Ja das stimmt zum Thema Mutex etc fehlen mir noch Grundlagen.

Ich hab es jetzt mal mit einem Mutex probiert aber das scheint nicht das zu sein was ich brauche. Bei einem Pärchen klappt es wunderbar aber ich habe die Befürchtung, dass das Konzept bei mehreren Clients nicht mehr möglich ist. Ich denke auch bei vielen Clients wird das sehr stockend und langsam 😦

Das Pdf ist zwar sehr gut hilft mir bei meinem speziellen Problem aber leider auch nicht weiter.

15.10.2009 - 12:30 Uhr

Achso es ist eine Kommunikation zwischen 2 Threads. Habe leider noch nicht al zu viel von Mutex oder Semaphor gehört und gerade ein wenig gelesen.

Wenn ich aber einen Semaphor verwende scheint sich ein neues Problem zu ergeben.

Folgendes: Die Anzahl der Threads variert (Client/Server). Es gibt jeweils 2 Clients die eine Verbindung zum Server aufbauen. Für beide wird ein Thread gestartet. Thread1(Client1) soll etwas schreiben (Name einer Datei). Thread2 soll die Datei suchen und den Inhalt an Client2 weiterreichen.

Jetzt müsste ich so wie ich es verstanden habe für jedes Pärchen einen neuen Mutex/Semaphor erstellen?

15.10.2009 - 11:38 Uhr

Gut dank dir. Schau ich mir mal an.

15.10.2009 - 11:23 Uhr

Hallo,

folgendes Problem:

Ich habe 2 Threads die im Moment gleichzeitig auf eine Datei zugreifen. Der eine Lesend der andere Schreibend. Leider klappt das alles andere als prächtig.

Daher meine Fragen:

Kann man gleichzeitig Schreibend und Lesend auf eine Datei zugreifen? Wenn ja gibt es dafuer evtl. eine Codebeispiel.

Kennt jemand eine bessere Möglichkeit zwischen zwei Threads zu kommunizieren?
MemoryStream vielleicht?

Hatte mir auch überlegt ob ich den generierten String von Threads2 in eine Datenbank schreibe und Threads1 diese ständig auslesen lasse aber davon bin ich nicht sonderlich überzeugt.

Hoffe jemand kann mir helfen.

14.10.2009 - 10:37 Uhr

Ok Dank dir werde es mal versuchen 😉

14.10.2009 - 10:33 Uhr

Gibt es eine Möglichkeit die Verbindung zurückzusetzen ohne das die "Urdaten" gelöscht werden?

14.10.2009 - 10:18 Uhr

Hallo,

ich habe ein Problem kann es aber nicht genau identifizieren. Meines Wissens gibt Dispose sämtliche Resourcen frei beendet aber nicht die Verbindung oder?

Also ich habe folgendes Problem:

Ich sende Daten an einen Client der eigentlich dauerhaft mit dem Client verbunden ist.
Damit der Client registriert wann ein Paket fertig gesendet wurde und dieses verarbeitet werden kann dachte ich mir ich mache nach jedem Paket ein Dispose und setze den Stream zurück. Tja das funktioniert nicht, weil er anscheinend die komplette
Verbindung schließt.

Vielen Dank für Vorschläge.

P.S Hoffentlich ist mein Post diesmal Regelkonform 😉

12.10.2009 - 09:49 Uhr

Hallo,

habe beim Suchen leider nichts gefunden.

also ich habe eine Klasse:

class test
{
     public test(int i)
    {
       ...
    }
}

darin ist ein Konstruktor der eine Variable erwartet. Wenn ich die Klasse jetzt ohne variable instanzieren will beschwert er sich. Gibt es da einen Weg?

Warum: Ich habe in der Klasse ein DataTable erstellt aus dem ich im ganzen Programm die Daten brauche.

Danke

06.10.2009 - 08:21 Uhr

Nein bisher funktioniert es auch so ohne weiteres.

Der Fehler lag an einer anderen Stelle. Man muss einmal anstatt das Searchresult zu returnen dies als DirectoryEntry zurückgeben und eben dieses dann auch an die nachfolgenden Funktionen weitergeben damit auch bei dem User geschrieben wurde.

Bei mir hat er anstatt die Userdescription die Domänendescription geändert. Weil ich das Entry vom Anfang genommen habe.

Mit freundlichen Grüßen

05.10.2009 - 11:51 Uhr

verwendetes Datenbanksystem: LDAP / Active Directory

Hallo,

hoffe ich bin hier im richtigem Forum.

Folgender Sachverhalt: Ich baue ein Programm das die Daten (Vorname, Nachname, Tel) des angemeldeten Benutzers ausliest. Diese Daten soll er verändern und abschicken können. Funktioniert auch alles prächtig bis auf das Absenden.

Folgende Fehlermeldung tritt auf beim CommitChange: "Der angeforderte Vorgang erfüllt mindestens eine Einschränkung nicht, die für diese Objektklasse Bedingung ist. "

Einmal die Funktion zum Auslesen der Properties:

public string GetActiveDirectoryContent(System.DirectoryServices.DirectorySearcher search, string SearchValue, string username)
        {
            search.Filter = "(&(objectClass=user)" + "(SamAccountName=" + username + "))";
            try
            {
                foreach (System.DirectoryServices.SearchResult result in search.FindAll())
                {
                    string SeachResult = SearchResult(result, SearchValue);
                    if (SeachResult == SearchValue)
                    {
                        return null;
                    }
                    else
                    {
                        return SeachResult;
                    }
                   }
                return null;
            }
            catch (SystemException)
            {
                return "0001";  
            }
        }

Einmal Funktion zum Wegschreiben:

public string SetActiveDirectoryProperty(System.DirectoryServices.DirectoryEntry myDirectoryEntry, string ActiveType, string ActiveValue)
        {
            try
            {
                myDirectoryEntry.Properties[""+ActiveType+""].Value = ActiveValue;
                return null;
            }
            catch (Exception)
            {
                return "0002";
            }
        }

und einmal der Commit. Den mache ich erst wenn ich keine daten mehr zum schreiben habe.

      public void ActiveSubmit(System.DirectoryServices.DirectoryEntry myDirectoryEntry)
        {
            myDirectoryEntry.CommitChanges();
            myDirectoryEntry.Close();
        }

Das DirectoryEntry erstelle ich einmal beim Programmstart.

Kennt sich jemand mit der Fehlermeldung aus oder hat einen guten Rat für mich?

P.S Benutzer hat das Recht in das AD zu schreiben folglich sollte es nicht an den Rechten liegen.

Vielen Dank

30.09.2009 - 12:15 Uhr

Naja sie blockt nicht komplett also anwählen kann ich die Bilder noch aber sie werden eben nicht mehr beim anklicken in die PictureBox geladen.

30.09.2009 - 11:39 Uhr

Hallo,

ich habe in meinem Programm ein FrameListView das mir, falls vorhanden alle Bilder in einem MultiTiff anzeigt. Bei einem Klick auf das Objekt wird in der großen PictureBox das ausgewählte Bild angezeigt.

Falls Dateien falsch in der TifFile abgelegt wurden, habe ich eine RotateFunktion eingebaut allerdings gibt es da anscheinend Probleme.

Sobald ich ein Bild drehe kann ich keine weiteren mehr aus der ListView auswählen b.z.w die Picturebox wird mit dem neuen Bild nicht refreshed.

if (this.Picture.Image != null)
            {
                this.Picture.Image.RotateFlip(RotateFlipType.Rotate90FlipNone);
                int height = this.scheinanzeigeBox.Height;
                this.Picture.Height = this.scheinanzeigeBox.Width;
                this.Picture.Width = height;
                this.Picture.Refresh();
            }
        }

Die Funktion ist mehr als simpel. Weiss jemand wie Rotate arbeitet? Ob er Vielleicht den reservierten MemoryStream überschreibt?

Danke

30.09.2009 - 11:34 Uhr

Ich habe von dem Zoom komplett abstand genommen und eine art Lupe integriert.

29.09.2009 - 14:02 Uhr

Hallo,

habe einen kleinen Bug finde ihn aber nicht. Betriebsblindheit 😉

Vielleicht findet einer von euch auf Anhieb den Fehler:


            if (scheinanzeigeBox.Image != null)
            {
                bool IsGoUp = e.Delta > 0 ? true : false;
                int hStep = (int)(this.scheinanzeigeBox.Image.Width * 0.01);
                int vStep = (int)(this.scheinanzeigeBox.Image.Height * 0.01);
                if (IsGoUp && scheinanzeigeBox.Width < 1600)
                {
                    this.scheinanzeigeBox.Width += hStep;
                    this.scheinanzeigeBox.Height += vStep;
                }
                else
                {
                    if (scheinanzeigeBox.Width > 300)
                    {
                        this.scheinanzeigeBox.Width -= hStep;
                        this.scheinanzeigeBox.Height -= vStep;
                    }
                }
                if (IsGoUp && this.panel1.VerticalScroll.Value > 5)
                {
                    this.panel1.VerticalScroll.Value -= 5;
                }
                if (!IsGoUp && this.panel1.VerticalScroll.Value < this.panel1.VerticalScroll.Maximum - 5)
                {
                    this.panel1.VerticalScroll.Value += 5;
                }
            }

Wenn ich ein Stück rauszoome, kommen die Scrollbars des darunter liegenden Panels. Sobald das passiert ist der Zoom futsch und das Panel bekommt den Focus.

Irgendeine Idee?

29.09.2009 - 08:23 Uhr

Hallo,

ich habe ein eigenartiges Problem / eigenartigen Bug.

Wenn ich mein Programm im Debugger teste habe ich in meiner ImageListView einen Threadübergreifenden Fehler. Wenn ich das Programm aber komplett erstelle ist er verschwunden und alles läuft einwandfrei.

Meine Frage: Wenn ich das Programm so veröffentliche kann es da im späteren Verlauf zu Fehlern kommen?

Mit freundlichen

23.09.2009 - 13:59 Uhr

Hat alles funktioniert. Wollte mich im nachhinein nochmal bei allen Helferlein bedanken.

23.09.2009 - 13:57 Uhr

Hi,

"Ungültiger threadübergreifender Vorgang Der Zugriff auf das Steuerelement richProtocol erfolgte von einem anderen Thread als dem Thread, für den es erstellt wurde."

Ich habe auf meiner Form ein Suchfeld in dem ich nach Dateien auf dem Server suchen kann. Wenn ich nun nichts in das Feld eintrage, schreibt er mir einen Fehler in die Richbox. Gebe ich dann im nachhinein etwas falsches an sollte er eigentlich wieder einen Fehler in die Richbox schreiben. Stattdessen spuckt er mir eine Fehlermeldung vor die Füsse.

Für mich sieht das so aus als könnte der Thread jeweils nur 1x auf das Steuerelement zugreifen. Kann ich das irgendwie umgehen oder mach ich da prinzipiell etwas falsch?

private void ProtocolInsert(string Message)
        {
            MolisClient ClientMessage = new MolisClient();
            richProtocol.Text = "" + richProtocol.Text + Message + "\r\n";
        }

Einmal die Funktion die ich mir dafuer geschrieben habe. Bisher hatte es funktioniert und ich bezweifel, dass es an der Funktion liegt sondern vielmehr an dem Thread.

Vielleicht kann mir ja einer Helfen.

danke im Vorraus

23.09.2009 - 08:16 Uhr

OK werds versuchen.

Danke für die Hilfe 😃

22.09.2009 - 16:54 Uhr

Anscheinend stimmt bei meiner ganzen Auffassung von *.tif etwas nicht.

Ich habe jetzt einfach mal eine Datei mit dem Editor geöffnet und den kompletten Inhalt in eine neue Datei kopiert die ich danach *.tif genannt habe.
Selbst die erkennt Windows nicht, obwohl es ja eigentlich kein Problem darstellen sollte.

Also der Aufbau einer *.Tif ist doch folgendermaßen:

"II* ê$ €?àP8$„BaP¸d6..." damit der Server es auf den NetworkStream legt nutze ich einfach NetworkStream.Write. Um die Daten aus der Datei zu lesen nehme ich fileStream.Read.

nun werden die Daten ja folgendermaßen also Bytearray übertragen: "73 73 100 ..."
(Beispielhaft).

So und beim Client baue ich das Bytearray wieder in einem String um und schreib es erstmal in eine Datei. Das ganze wandel ich mit _System.Text.Encoding.Ascii.To... _
um.

Vielleicht kann mir einer helfen.

22.09.2009 - 11:22 Uhr

Selbst wenn ich es Byteweise übertrage bekomme ich kein ordentliches Tif File. Es scheint als würde er beim Übertragen einfach einige Zeichen in Schrott verwandeln. z.B Kommas und Hochkommas.

17.09.2009 - 08:15 Uhr

Nein das wäre das nächste Problem. Ich hoffte, dass wenn das mit dem Senden erfolgreich verläuft die empfangene Datei eine nutzbare *.Tif Datei ist. Allerdings hab ich da auch noch meine zweifel.

Also ich habe den Fehler anscheiend gefunden. Es lag an der Zeichenrückkodierung vom Client. Damit alles richtig angezeigt wird habe ich Encoding.default benutzt. Wenn ich es auf Ascii stelle scheint es eine richtige Datei mit der richtigen größe zu werden allerdings, stimmt der Inhalt jetzt nicht mehr.

Einer eine Idee welche Kodierung da sinnvoll ist?

16.09.2009 - 14:28 Uhr

Ich habe im Hinterkopf das Groß/Kleinschreibung beim abrufen der AD Eigenschaftswerte sinnvoll ist. Probier es mal mit sAMAccountName oder SamAccountName.

Bin mir aber nicht 100% sicher.

16.09.2009 - 14:22 Uhr

Ich lese die Datei ein und schicke die Daten nach dem einlesen über den Stream zum Client.


while (readedByts < fileLenght && networkStream.CanWrite)
{
    readedLength = fileStreamIn.Read(buffed, 0, buffed.Length);
    stream.Write(buffed, 0, readedLength);
    readedByts += readedLength;
}

da sollte eigentlich kein Problem bestehen.

16.09.2009 - 08:24 Uhr

Hi,

ich versuche eine *.tif Datei über das Netzwerk zu streamen. Klappt auch alles wunderbar wenn die Datei allerdings am Client ankommt ist sie ca. 100kb größer als die ursprüngliche Datei.

Folgender Aufbau liegt vor:

Anfrage des Clients ob Bild xxx vorhanden.
Wenn vorhanden schickt Server das Bild (ByteArray).
Client empfängt Bild und schreibt empfangene Daten in eine Datei.

Daten werden jeweils immer in 1kb Paketen geschickt. Dateigröße ca. 155kb.

Kann es sein das der Client auch Daten empfängt die eigentlich nicht zu der Datei gehören z.b irgendwelche Pakete die einfach so im Netzwerk umher irren?

lg