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 Emiswelt
Thema: Semdegeschwindigkeit messen
Am im Forum: Netzwerktechnologien

Hi

Du musst deine Daten ja beim Senden in den Stream schreiben. Wenn du die Möglichkeit hast, die Größe dort abzufragen, könntest du ebenfalls mitzählen.

Nachdem dir die Größe in deinem serialisierten Objekt bekannt ist, dürfte das ja eigentlich kein Problem sein, oder? Zumindest bei kleineren Objekten dürfte das gut funktionieren.

Bei großen Objekten kannst du dann den Speed wohl erst berechnen, wenn das erste Objekt schon übertragen ist...

lg

Thema: Edge Server (reverse proxy)
Am im Forum: Netzwerktechnologien

Jep, du hast recht.

Du könntest ja einfach ein Dictionary verwenden? Oder die beiden Sockets zusammen mithilfe einer Datenstrutktur assoziieren?

Thema: Edge Server (reverse proxy)
Am im Forum: Netzwerktechnologien

Der System.Web Namespace bietet eine Reihe von Klassen, beispielsweise HttpRequest oder HttpResponse. Ich würde Sagen, mit dem Klassen in diesem Namespace könntest du sicher eine Art von HTTP-Weiterleitung zusammenbasteln, so, dass es aussieht, als würde dein Server alle Responses beantworten, obwohl dieser sie aber in Wirklichkeit an den Webserver weiterleitet.

Wahrscheinlich noch performanter wär es, wenn du das ganze einfach über Sockets löst, wobei dein "Edge-Server" eben auf Port 80 hören und alle Verbindungen sozusagen weiterleiten müsste.

lg, Emiswelt

Thema: IPv6: Was tun, um ein Desaster zu verhindern?
Am im Forum: Smalltalk

Jep, ein paar bekannte Professoren von mir haben IPv6 in ihrer Schule zusammen mit dem Provider eingeführt. ;-).

Thema: Webclient DownloadStringAsync Problem
Am im Forum: Netzwerktechnologien

Dann musst du wohl oder übel das Handling des Strings im Event-Handler machen und auf den Rückgabewert verzichten. =(.

Ich denke, das wird kein so großes Problem sein?

Thema: Wie ermittelt man die Pixel, die C# beim Zeichnen einer Linie oder eines Splines verwendet?
Am im Forum: Grafik und Sound

@PowerTower

Wie Herbivore schon sagte: zeiche auf den Graphics-Context einer Bitmap und frag dann die Pixel ab. Eine Bitmap ist ja nichts anderes als ein Array.

Du solltest villeicht dieses Problem für sphärische Linsen programmiertechnisch sauber lösen, bevor du es als zu billig abtust.
Eine saubere Lösung wäre berechnen, nicht zeichnen und dann die Pixel abfragen.

Frage am Rande: Wenn du die Strahlenverläufe nicht eh schon berechnet hast, wie willst du dann überhaupt Formen zeichnen?

Thema: Wie ermittelt man die Pixel, die C# beim Zeichnen einer Linie oder eines Splines verwendet?
Am im Forum: Grafik und Sound

Hi PowerTower

Im Sinne deiner Idee würde ich dir raten, die Phsyikberechnungen (Linien etc.) von der Oberfläche selbst zu trennen und einfach einen Linienalgorithmus, eine Kreisfunktion oder sonstwas zu verwenden, das dir alle Punkte zurückliefert.

In Frage kommen würde hierfür zum Beispiel der Bresenham-Algorithmus. Dieser ist allerdings ein wenig kompliziert. Eine Linie berechnen funktioniert auch einfacher, allerdings ist dies der schnellste Weg.

lg, Emiswelt

Thema: Server eingehende Verbindungen warten; in Program.cs
Am im Forum: Rund um die Programmierung

Du könntest ein Event in deiner MyServer-Klasse machen, das aufgerufen wird, sobald der Server sich registriert hat, und einen Handler für dieses Event in deiner Main-Klasse erstellen.

Dort verwendest du dann einfach ein ManualResetEvent, so, dass der Hauptthread so lange wartet, bis das Event im Event-Handler gesetzt wird.


EDIT:

Villeicht ist es aber auch der richtige Weg, im OnAfterConnect einen kleinen Client-Thread zu spawnen, um diesen dann mit der Kommunikation zu beauftragen?
Designtechnisch villeicht sauberer - ich kenne diese Library nicht gut genug.

Thema: 8 Byte mit Einwegfunktion verkleinern?
Am im Forum: Rund um die Programmierung

Hi

Ich nehm mal an, du willst eine hashbasierte Kompression basteln, die die Daten durch die Hashfunktion immer komprimiert, unabhängig von den Ausgangsdaten?

Wie herbivore schon schrieb, es ist nicht möglich aus 8 Byte weniger zu machen, ohne dabei Daten zu verlieren und nicht aus zwei verschiedenen Datenblöcken den selben Hashwert zu machen.

Sagen wir mal, du machst auch 8 Byte durch eine Hashfunktion 6 Byte. Dann hast du theorethisch (falls die Funktion die Werte gleich verteilt) pro Ausgangswert 2^16 Ausgangswerte, die denselben Hash ergeben.

Du kannst hier relativ viel zu dem Thema perfekte Kompression nachlesen: http://www.faqs.org/faqs/compression-faq/part1/section-8.html

oder verstehe ich dich falsch?

lg, Emiswelt

Thema: [GDI+] Image-Objekt: Hintergrundfarbe ermitteln
Am im Forum: Grafik und Sound

@der-schlingel:

Du könntest deine Methode ja so erweitern, dass die Randpixel eines Bildes höher gewichtet werden?

Dennoch hat Herbivore recht... Das ist wieder mal ein schwer zu lösendes Problem. Deine Methode hängt primär davon ab, mit welchen Bildern du arbeitest.

Thema: Alle Gruppen eines Benutzers im LDAP abfragen
Am im Forum: Rund um die Programmierung

Versuchs mal mit

searcher.PropertiesToLoad.Add("MemberOf");

Villeicht bringt das was ;-).

Warum machst du da unten eigentlich einen Substring, wenn ich fragen darf?

Thema: 8 Byte mit Einwegfunktion verkleinern?
Am im Forum: Rund um die Programmierung

Herbivore hat das jetzt toll erklärt ^^

@Alphawolf:

Für was benötigst du die Hashfunktion? Wenn du sie zum kryptographischen Hashen benötigst, würd ich auf MD5 oder SHA1 aufbauen.

Thema: Webclient DownloadStringAsync Problem
Am im Forum: Netzwerktechnologien

Ich würde dir in diesem Fall dazu raten, das ganze nicht asynchron zu machen, da du den Rückgabewert in derselben Methode brauchst.


protected string ExecuteGetCommand(string url, string userName, string password)
{
      WebClient client = new WebClient();
      client.Credentials = new NetworkCredential(userName, password);
      string str = client.DownloadString(new Uri(url));
      client.Dispose();
      return str;
}

Der Thread, der das ganze ausführt wird halt dann für den Web-Request verwendet, was in einer Windows-Forms Application dazu führen kann, dass alles ein klein wenig hängt.

Thema: IPv6: Was tun, um ein Desaster zu verhindern?
Am im Forum: Smalltalk

@Herbivore:

Zitat
je länger sich die Einführung zieht, für desto wahrscheinlicher halte ich das.

Na ja, aber bestimmt nicht alle. Es haben ja auch schon einige ISPs Ipv6 eingeführt, und ich denke, es wird kosequenzen für die ISPs haben, die dabei versagen, vor allem von Seiten der professionelen- und Großkundschaft.

Thema: IPv6: Was tun, um ein Desaster zu verhindern?
Am im Forum: Smalltalk

Zitat
Datenschützer sind keine Entscheidungsträger.

Aber gab es nicht immer Mittel und Wege? Außerdem entscheidet doch schlussendlich, was der Konsument will (in diesem Fall der Internetuser), nicht was die Politiker wollen.

Und eine andere Ansicht: Wäre es nicht eh besser, wenn jede Raubkopie, jede illegale Aktivität nachverfolgt werden könnte? Du als Programmierer müsstest ja eigentlich auch so denken. Tut es nicht weh, jedes Jahr um Millionen an Gewinn für die entwickelte Software gebracht zu werden?

Thema: IPv6: Was tun, um ein Desaster zu verhindern?
Am im Forum: Smalltalk

@Herbivore:

Zitat
Wenn ich alleine daran denke, was es an Unmengen von Programmen gibt, die fest mit 32-Bit-IP-Adressen arbeiten, dann ist die Herausforderung der Umstellung mindestens vergleichbar mit dem Jahr-2000-Problem

Stimmt, du hast schon recht, dass manche Programme fest mit 32-Bit Adressen arbeiten. Aber die frage ist, welche davon werden von der breiten Masse auch wirklich genutzt? Sämtliche Broswer dürften schon ohne Probleme IPv6-Ready sein und E-Mail Clients und Player auch...
Ich denke, das einzige Problem wär hierbei Software, die relativ tief in das Netzwerk bzw. die Hardware integriert ist, und die betrifft die breite Masse eigentlich gar nicht so.
Ich mein, wenn man sich .NET ansieht... Programmiert man eine einfach Anwendung mit einem Socket und den Methoden der IPAddress Klasse, so unterstützt diese IPv4 und IPv6, ohne dass man sich auch nur irgendwie Gedanken drüber machen müsste.
Zitat
die c't schlägt vor, ein Byte des Port-Feldes quasi als Verlängerung der IP-Adresse zu benutzen. Die Idee finde ich allerdings alles andere als überzeugend. Ich kann mir nicht vorstellen, dass das so einfach und reibungslos funktioniert.

Dito. Das wäre Blödsinn und würde die End-To-End Fähigkeit noch weiter einschränken. Auch noch eine NAT-Ebene ist eher eine Schlechte Idee. NAT hat einfach zu viele Einschränkungen.

@winSharp93
Zitat
Was, wenn hinterher doch statische IP-Adressen (möglicherweise bei manchen Geräten sogar auf Hardwarebasis) vergeben werden?

Das würde wahrscheinlich niemand tun, da es ein totaler Designbruch mit dem TCP/IP-Prinzip ist. Wenn du deine IP verdecken willst, dann kannst du das auch weiterhin tun.

@Herbivore:
Zitat
wenn sich an der Geschwindigkeit, mit der sich IPv6 durchsetzt (oder sollte ich sagen, eben nicht durchsetzt) nichts ändert, dann schon.

Meinst du, unserer Serviceprovider versagen wirklich so haushoch und lassen das Internet zum erliegen kommen?

@Jack30lena
Zitat
das mit den statischen IP´s wird ganz sicher kommen. wenn nicht durch die Provider, dann durch die Politik der Lobbyisten, da sich dann niemand mehr verstecken könnte und eine Straftat (Raubkopie) noch Jahre später ohne weiteres nachweisbar wäre.

Ich denke, unsere Datenschützer werden sich zu wehren wissen ;-)

Thema: IPv6: Was tun, um ein Desaster zu verhindern?
Am im Forum: Smalltalk

Der Grund dafür ist, dass sich viele Provider sträuben, da dies einfach neukonfiguration vieler Geräte bedeutet.
Windows und auch alle High-End-Netzwerkgeräte (Cisco, Juniper aber auch die Linux-Suites Quagga und XORP) sind schon seit Jahren IPV6-fähig.

Die Sache ist jetzt diese: In Asien werden schon überwiegend IPv6-Netzwerke eingesetzt. Daher ist es für uns in Europa nicht ganz so knapp. Zusammen mit der Notlösung NAT und Subnetting haben wir noch ca. bis 2012 genügend IPv4-Adressen, wenn die Adressvergabe in der gleichen Rate wie jetzt weiter voranschreitet.

Daher lassen sich die Provider auch ein wenig Zeit, was an sich kein Problem ist. Die Umstellung ist ja wohl im werden, nur langsam, aber dafür stetig.

Das einzige Problem, das sich halt ergeben könnte, ist, dass diverse Billigmarken und Software-Firewalls IPv6 nicht unterstützen, was aber eher ein Problem für Home-User darstellen dürfte, was allerdings auch kein Problem ist, da diese ja ohnehin in privaten Adressbereichen sind. Wer braucht schon 2^128 Adressen in seinem Heimnetzwerk? Das kommt eher für Firmen etc. in Frage und da ist es ohnehin schon sehr am kommen.

Also keine Angst vor dem Desaster, es wird vermutlich nicht eintreten. ;-).

Thema: AvlDictionary - Eine C# Avl-Tree basierte generic IDictionary<TKey,TValue> Implementierung.
Am im Forum: .NET-Komponenten und C#-Snippets

Find ich toll.

Gewaltig groß und sicher kompliziert, aber extrem toll =].
Vor allem findet man so mächtige Snippets für .NET eher selten unter der GPL.

Was mich allerdings stutzig macht sind die statischen Methoden, pblTreeNodeInsert zum Beispiel. Wieso sind die statisch, wenn ich fragen darf?

Thema: Aprilscherze
Am im Forum: Smalltalk

Auf The Daily WTF wurde heute die neueste Errungenschaft auf den Gebiet der Datenbanktechnologie vorgestellt, die APDB, eine Nicht-Relationale Datenbank, die direkt via JavaScript angesprochen werden kann, damit man sich die Serverprogrammierung bei Webanwendungen spart ;-).

http://thedailywtf.com/Articles/Announcing-APDB-The-Worlds-Fastest-Database.aspx

Thema: WCF über das Internet
Am im Forum: Netzwerktechnologien

Alles klar.

Versuch mal, das ganze mit Telnet bzw. den Hyperterminal auf dem selben Port zu testen, also quasi auf einem PC mit dem Hyperterminal auf eine Verbindung auf dem jeweiligen Port warten und dich vom anderen PC mit hinverbinden.

So könntest du feststellen, ob es sich um ein Problem auf Netzwerk- oder auf Softwareebene handelt.

Thema: WCF über das Internet
Am im Forum: Netzwerktechnologien

Ja, dass du als Privatanwender keine Öffentliche IP-Adresse beseitzt beziehungsweise der Provider NAT verwendet. Villeicht solltest du bei deinem Provider nachfragen, ob dein Router von außen erreichbar ist?

Thema: Sound über internen PC-/BIOS-Lautsprecher ausgeben
Am im Forum: Grafik und Sound

Hast du ein Notebook oder einen PC?

bzw. ist bei dir überhaupt ein BIOS-Lautsprecher angesteckt?

kann ja auch sein, dass dein Motherboard das gar nicht mehr kann ;-).

Bei unseren Schul-PCs von 2004 oder so ging das Ausgeben von BIOS-Sounds mit dieser Funktion noch wunderbar.

Thema: Stream auslesen dauert sehr lange - schnellerer Weg?
Am im Forum: Netzwerktechnologien

Ich würde mal ganz konkret sagen, du öffnest einen Wireshark, filterst die Pakete, die auf dich bzw. deinen Remote-Host zutreffen und siehst dir mal an, ob, falls das ganze länger dauert, bis zum Ende Daten übertragen werden, oder ob die Datenübertragung schon vorher abgeschlossen ist.

Ich denke, das sollte dir wirklich Aufschluss darüber geben, ob das ganze nun an der .NET Api oder irgendeinem Problem auf Programmebene oder am Netzwerk liegt.

Thema: Stream verbindung von PC1 zu PC2 übers internet! geht das bzw. brauche stichworte!
Am im Forum: Netzwerktechnologien

Hi

Wenn du es ausprogrammieren möchtest, brauchst du zumindest auf einer Seite Port-Forwarding zusammen mit einer öffentlichen IP-Adresse.

Du solltest diese Verbindung eventuell als erstes überprüfen, beispielsweise durch Pings (nicht vergessen, zuerst ICMP forwarding einstellen) oder durch eine einfache Anwendung, zum Beispiel einen FTP-Server, Port 23 freigeben und verbinden versuchen.

Sofern das geht, ist die erste Hürde bewältigt.

Zu der Anwendung:

Videos von einer Kamera kannst du in erster Linie über DirectShow abfragen (oder auch über VFW, wie du schon schreibst). Es gibt einige recht gute Samples, wie du einzelne Bilder deines Videos abfragen kannst. Einfach mal googlen.

Der Rest besteht aus zwei Sockets oder auch TCPClients, um die Verbindung aufzubauen und aus eventuell ein wenig Verschlüsselung (die das .NET Framework mit System.Security zu verfügung stellt).

Nun musst du deine Daten nur noch richtig in Bytes zerlegen, übertragen und anderswo wieder zusammenbauen.
Die einfachste, aber auch die uneffizienteste Lösung wäre hierbei, die Bilder einfach in einen Stream zu speichern (Image.Save) und diese Byte-Daten Bild für Bild über das Netzwerk zu übertragen und auf der anderen Seite wieder zusammenzusetzen und anzuzeigen.
Einen wirklich guten Codec auszuprogrammieren stell ich mir sehr schwierig vor, aber wer weiß, villeicht findest du etwas da draußen im Internet.

Soviel zur Ausprogrammierung.

Abgesehen davon, das das extrem viel Aufwand ist, ist Videostreaming auch nicht unbedingt leicht umzusetzen. Du solltest villeicht einfach eine Anwendung verwenden, die das bereits kann, beispielsweise den VLC-Media Player, der Videos von einer Webcam direkt über das Netzwerk übertragen und auch anderswo wieder empfangen kann.

Viel Erfolg - und solltest du alles zusammen doch ausprogrammieren - sag Bescheid, es würd mich interessieren ;-). (Kann dir auch noch Detailinfos zur Datenübertragung etc. geben, wenn es dich interessiert. Hab sowas schon mal gemacht - funkionierte allerdings eher schlecht).

lg, emiswelt

Thema: Im Browser eingegebene URLs überwachen und ggf. umleiten.
Am im Forum: Rund um die Programmierung

Hi

Das ist gar kein triviales Problem, das du da hast.

Ich würd auch sagen, dass eine lokale Proxy eine einfache möglichkeit wäre.

Die nächste - etwas sauberere - Methode wäre natürlich die Implementierung einer kleinen Firewall in C#, die alle Daten analysiert, HTTP-Daten erkennt und dementsprechend umleitet.

Hört sich schwer an, ist aber machbar und sicher eine Sache, die einem Programmierer einiges an Erfahrung einbringt.

Und ja, natürlich realsierung via Broswer-Plugin.

Jede Methode hat ihre Vor- und Nachteile. Ich persönlich würde zur mittleren tendieren.

lg

Thema: Sound über internen PC-/BIOS-Lautsprecher ausgeben
Am im Forum: Grafik und Sound

Hi

Das ganze dürfte mit folgendem Dll-Import gehen:

[DllImport("Kernel32.dll")]
public static extern bool Beep(UInt32 frequency, UInt32 duration);

Quelle: http://www.dotnetspark.com/kb/32-generate-beep.aspx

Klar? ^^

Thema: eEx Net Lab & Network Library
Am im Forum: Projekte

*thread fest anpack*

*push*

Hi

Nachdem doch schon ~180 User auf meinen ersten Beitrag geklickt und auch mein Download schon einige Hits verzeichnen konnte, wollte ich fragen, ob es denn wirklich keine Kommentare zu diesem Projekt gibt?

Feedback? Beschwerden? Anregungen? Wünsche? Lob? Ideen für neue Features? Ideen für Projekte?

Bin für so ziemlich alles dankbar.

lg, emiswelt

Thema: Suche Emulatoren-Coder für Gaming-Project
Am im Forum: Projekte

Du willst einen Emulator für einen X-Beliebigen Shooter schreiben und suchst dafür Leute mit Erfahrung zu Sockeprogrammierung?

Was darf man sich darunter vorstellen?
Oder meinst du, dass du einen eigenen Server für Online-Games implementieren willst?

Thema: Bestimmte Arbeitsspeicherabschnitte auslesen und beschreiben?
Am im Forum: Basistechnologien und allgemeine .NET-Klassen

Die Variablen eines anderen Programms?

Ich würd mal ganz konkret sagen, dass das aufgrund der Speicherverwaltung von Windows am einfachsten mit einem Debugger zustande gebracht werden kann... also eher nicht so einfach zu programmieren.

Ich bin mir gar nicht so sicher, ob man überhaupt mit einem einfachen Pointer auf den Speicherbereich eines anderen Programms zugreifen kann... zumindest ohne irgendwelche AccessViolationExcpetions.

Thema: Plugin-System - Individuell entladbare plugins?
Am im Forum: Rund um die Programmierung

Also ich würd jetzt sagen, dass du wirklich pluginAssembly.FullName verwenden musst, da in dieser Assembly deine Klasse definiert ist.

Die FileNotFoundException deutet laut MSDA (Activator.CreateInstance-Methode (AppDomain, String, String)) darauf hin, dass die pluginAssembly nicht gefunden wurde. Seltsam.