errox Geschrieben 18. September 2009 Geschrieben 18. September 2009 Hallo Mitglieder, ich möchte gerne meinen Entwicklerhorizont erweitern und einen Schritt in die Netzwerkprogrammierung wagen. Meine Erfahrungen im Bereich Netzwerkprogrammierungen sind minimal. Ich weiss was ein Socket ist, ein Server, Client und den Unterschied eines TCP / UDP Protokolls. Erfahrungen im bereich Programmierung hab ich viele. Ich selbst bin hauptberuflich Softwareentwickler mit dem schwerpunkt mobile Geräteentwicklung im bereich C# .NET. Nebenher habe ich sehr viele Erfahrungen in C++ und C++ .NET gemacht. Mein Zielprojekt ist ein Datenaustausch zwischen einem mobilen Gerät zu einem anderen über einen Server. Möglich ist dies durch eine Internetverbindung über eine GPRS Verbindung. Die Idee sieht in meinem Kopf ungefähir so aus: Der Serveranwendung soll in C++ geschrieben werden, da der Server unter Linux läuft. Die Clients in C# oder C++ .NET. Je nach dem, was mir leichter fällt. NATÜRLICH darf man nicht übermütig sein, so soll es blos am ende aussehen. Ich hab am Anfang nur an ein Internen Chat gedacht in "reinem .NET" Code Was mir halt fehlt sind Referenzen, um diese Techniken zu erlernen. Ich bitte euch mich nicht mit Google Suchbefehlen wie "Netzwerkprogrammierung .NET" vollzubombadieren. Ich bin nicht der einzige, der die Netzwerkprogrammierung erlernen will und ich möchte gerne etwas lesen wo jemand schonmal dazu gesagt hat "Wow, das ist klar, strukturiert und verständlich aufgebaut". Das einzige gescheite was ich grad nebenher lese ist ein MSDN Artikel: Netzwerkprogrammierung Ich danke euch im Vorraus Liebe Grüße errox Zitieren
flashpixx Geschrieben 18. September 2009 Geschrieben 18. September 2009 Ich denke die zentrale Frage wäre, willst Du ein Protokoll selbst entwickeln bzw musst Du es selbst entwickeln oder soll lieber ein Standard verwendet werden. Ich kann jetzt mal in den Raum "Webservices" werfen, dafür gibt es entsprechende fertige Komponenten. Würde sich aber nur anbieten, wenn Du nicht "Echtzeit" arbeiten musst, da Du doch schon immer Overhead mit schleppen musst. Der Vorteil würde bestehen, dass er über http(s) kommuniziert und eben dadurch auch firewall-technisch relativ wenig Probleme macht. Vielleicht führst Du einmal aus, was für Daten zwischen Client und Server ausgetauscht werden sollen und was letztendlich als konkrete Anwendung geplant ist Zitieren
errox Geschrieben 18. September 2009 Autor Geschrieben 18. September 2009 Hallo flashpixx, du hast ja Bereits einmal mein Theard bezüglich dem FlashChat gesehen. Das soll ja mehr oder Weniger damit Verknüpft werden. Also ich schätze mal aus dem Bauch heraus, dass ich lieber ein Standardprotokoll verwende ( TCP/IP ). Ich mein, es ist relativ viel am anfang schon ein eigenes zu schreiben Im moment müsste ich NICHT in Echtzeit arbeiten, wäre aber vom Vorteil. Später soll das ja auch Geschäftlich verwendet werden. Da ist mein nächstes Problem: Firewalls. Welche Ports sind für mich Verwendbar? Was ich letzenendes erreichen will ist eine Anwendung, die in echtzeit von einem Mobilen endgerät daten von A nach B ladet. z.B. aktuelle Position ( GPS ). Aber bis ich soweit bin, dauert es noch lange. Ich bin ja nicht mal in der Lage ein Programm zu schreiben, wo ich auf PC A auf einem Button drücke und auf PC B eine MessageBox erscheint, wenn auf PC A der Button gedrückt wurde. Wenn ich das kann, können wir weiter reden Liebe Grüße errox Zitieren
flashpixx Geschrieben 18. September 2009 Geschrieben 18. September 2009 Also ich schätze mal aus dem Bauch heraus, dass ich lieber ein Standardprotokoll verwende ( TCP/IP ). Ich mein, es ist relativ viel am anfang schon ein eigenes zu schreiben Du solltest Dich erst einmal mit den Netzwerkgrundlagen vertraut machen, TCP/IP ist nicht ein, sondern sind zwei Protokolle Transmission Control Protocol ? Wikipedia Internet Protocol ? Wikipedia Aber warum zwingend TCP und nicht UDP ? Da ist mein nächstes Problem: Firewalls. Welche Ports sind für mich Verwendbar? Diese Frage kann Dir niemand beantworten, im Grunde von 0 bis 2^16 -1. Ich bin ja nicht mal in der Lage ein Programm zu schreiben, wo ich auf PC A auf einem Button drücke und auf PC B eine MessageBox erscheint, wenn auf PC A der Button gedrückt wurde. Wenn ich das kann, können wir weiter reden Du solltest Dich wirklich mal mit den einfachsten Netzwerkgrundlagen beschäftigen, d.h. ein Byte von Rechner A zu B zu senden. Es bringt rein gar nichts, wenn Du Dich mit Protokollspezifikationen auseinander setzt, bevor Du die Grundlagen nicht sicher beherrscht Zitieren
computerjan Geschrieben 18. September 2009 Geschrieben 18. September 2009 Du solltest Dich wirklich mal mit den einfachsten Netzwerkgrundlagen beschäftigen, d.h. ein Byte von Rechner A zu B zu senden. Es bringt rein gar nichts, wenn Du Dich mit Protokollspezifikationen auseinander setzt, bevor Du die Grundlagen nicht sicher beherrscht Hallo, wo wir grade bei dem Thema sind. Ich bin auch begeisterter Freizeitprogrammierer und möchte auch einen kleinen Einblick in die Netzwerktechnik werfen. Habe schon Erfahrungen mit DNS, HTTP, FTP, usw. wie das alles funktioniert und aussieht. Um meine Grundlagen zu stärken suche ich jetzt ein gutes Tutorial oder Buch:) Könnt ihr mir vll was empfehlen ?? mfg jan Zitieren
flashpixx Geschrieben 18. September 2009 Geschrieben 18. September 2009 Könnt ihr mir vll was empfehlen ?? Generell würde ich Literatur verwenden, wo Socket Programmierung erklärt ist. Ich persönlich, auch wenn wir hier im .NET Forum sind, würde sogar eher sagen, dass ein Anfänger vielleicht "back-to-the-roots" gehen sollte und vielleicht einmal grundlegende Beispiele zu Sockets unter C schreiben sollte. Damit lassen sich recht schnell Grundkenntnisse lernen Zitieren
computerjan Geschrieben 18. September 2009 Geschrieben 18. September 2009 Was sagt ihr zu dem hier: Computernetzwerke. Von den Grundlagen zur Funktion und Anwendung: Amazon.de: Rüdiger Schreiner: Bücher Hat gute Bewertungen und ist auch nicht zu teuer. In dem Buch wird eigentlich alles grundlegende behandelt. Programmiertechnisch wollte ich jetzt nicht gleich anfangen, weil bin ich hauptsächlich auf Web-Ebene mit PHP, JavaScript, Python, HTML, blabla... tätig mfg jan Zitieren
errox Geschrieben 18. September 2009 Autor Geschrieben 18. September 2009 Aber warum zwingend TCP und nicht UDP ? Laut MSDN Ist TCP zuverlässiger. Die Datenpakete werden einmal gesendet, auf bedarf wieder, wenn das Paket nicht angekommen ist, in der gleichen Reihenfolge. Kurz: P2P. UDP Hat Zwar mehr Performance, is aber eher für LiveStream, OnlineGames gedacht. LAUT MSDN! Du solltest Dich wirklich mal mit den einfachsten Netzwerkgrundlagen beschäftigen, d.h. ein Byte von Rechner A zu B zu senden. Es bringt rein gar nichts, wenn Du Dich mit Protokollspezifikationen auseinander setzt, bevor Du die Grundlagen nicht sicher beherrscht Eigentlich war in dem Thema meine Frage: Was mir halt fehlt sind Referenzen, um diese Techniken zu erlernen. Ich bitte euch mich nicht mit Google Suchbefehlen wie "Netzwerkprogrammierung .NET" vollzubombadieren. Ich bin nicht der einzige, der die Netzwerkprogrammierung erlernen will und ich möchte gerne etwas lesen wo jemand schonmal dazu gesagt hat "Wow, das ist klar, strukturiert und verständlich aufgebaut". Aber eigentlich hätt ich mehr an einem Onlinetutorial Gedacht. Weil die MSDN Seite hilft einem nicht so ganz. Liebe Grüße errox Zitieren
Bubble Geschrieben 19. September 2009 Geschrieben 19. September 2009 Laut MSDN Ist TCP zuverlässiger. Die Datenpakete werden einmal gesendet, auf bedarf wieder, wenn das Paket nicht angekommen ist, in der gleichen Reihenfolge. Kurz: P2P. UDP Hat Zwar mehr Performance, is aber eher für LiveStream, OnlineGames gedacht. Das ist richtig, beschreibt aber nicht den eigentlichen Unterschied zwischen TCP und UDP. Beides kann man für die gleichen Anwendungen einsetzen, nur manchmal ist das eine eben ausreichend oder günstiger. Für die ersten Experimente würde ich TCP vorschlagen, in diesem Fall kann man auch leicht zu Übungszwecken einen simplen Mini-Server und dazugehörigen Client basteln. Alles weitere kann dann darauf aufbauen. Aber eigentlich hätt ich mehr an einem Onlinetutorial Gedacht. Weil die MSDN Seite hilft einem nicht so ganz. In der MSDN Library ist auch eine Einführung (verwendet C) in die Windows Socket Programmierung enthalten. An anderer Stelle sind auch Beispiele für einen einfachen Server und Client für .NET Entwickler vorhanden. Zitieren
AmunRa Geschrieben 19. September 2009 Geschrieben 19. September 2009 (bearbeitet) Was mir halt fehlt sind Referenzen, um diese Techniken zu erlernen. Ich bitte euch mich nicht mit Google Suchbefehlen wie "Netzwerkprogrammierung .NET" vollzubombadieren. Schau mal hier. TCP/IP Socket-Programmierung in C# TCP/IP Socket-Programmierung in C# Das beste deutsche Tutorial zur Netzwerkprogrammierung in .NET (C#). Dort steht auch worin die genauen Unterschiede zwischen TCP und UDP liegen und was wann eingesetzt wird. Bearbeitet 19. September 2009 von AmunRa Zitieren
TDM Geschrieben 21. September 2009 Geschrieben 21. September 2009 Aber eigentlich hätt ich mehr an einem Onlinetutorial Gedacht. Weil die MSDN Seite hilft einem nicht so ganz. Nicht? System.Net Namespace aufgemachtAufgabenstellung nochmal gelesenKlassenbeschreibung durchgelesenWebclient-Klasse gesehen. Beispiel angeschaut. Nicht das, was du wolltest? (Daten senden/empfangen) Zitieren
errox Geschrieben 23. September 2009 Autor Geschrieben 23. September 2009 Also zunächst bedanke ich mich für alle Hilfreichen Beiträge. Ich hoffe, ich werde in der nächsten Zeit meine Fortschritte machen und mich weiterhin Melden Ich werde mich nicht Speziell auf die .NET Klassen orientieren, da ich ja auch Serveranwendungen unter Linux erstellen muss, und das nicht so Praktisch ist, wenn ich ne .NET Klasse unter Linux verwenden will Mono hin oder her, ich bleib bei der Klassischen Socket() Methode. Vielen lieben Dank! Liebe Grüße errox Zitieren
flashpixx Geschrieben 23. September 2009 Geschrieben 23. September 2009 da ich ja auch Serveranwendungen unter Linux erstellen muss Da würde ich Dir sehr zu C++ raten, wenn es vor allem auch cross-plattform werden soll. Mit ASIO der Boost kannst Du das recht gut realisieren Boost.Asio Zitieren
AmunRa Geschrieben 24. September 2009 Geschrieben 24. September 2009 Boost.Asio ist ein Krampf! Solange der C++ Standard keine Netzwerkprogrammierung definiert und das der Plattform überlässt, rate ich zu Qt 4. Das ist für C++-Programmierer die richtige Wahl um plattformunabhängig zu bleiben. Zitieren
flashpixx Geschrieben 24. September 2009 Geschrieben 24. September 2009 Boost.Asio ist ein Krampf! Solange der C++ Standard keine Netzwerkprogrammierung definiert und das der Plattform überlässt, rate ich zu Qt 4. Naja kann man geteilter Meinung sein, aber Qt ist auch eine feine Sache (auch für Datenbankanbindung) Zitieren
errox Geschrieben 27. September 2009 Autor Geschrieben 27. September 2009 Tut mir leid, dass ich erst jetzt antworte aber ich war auf etwas anderes Konzentriert. Also in C++ muss ich Plattformunabhängig bleiben, da ich die Serveranwendung unter Linux zum laufen bringen will. Dass mit der Datenbankanbindung ist auch eine Wichtige sache. Die sollte unter MySQL ebenfalls funktionieren, aber ich denke das ist grad meine Größte sorge. Gibt es vielleicht noch tutorials, die auch die UDP Protokolle erklären und ein gut erklärtes Beispiel, wie man einen Chat erstellt? ( Es muss nicht auf dem Niveau von Diversen Instant-Messaging sein, sondern das Server-Client Prinzip zu testen ) C# oder C++ .NET Bitte eins, wo auch jemand Persönliche erfahrungen mit gemacht hat. Vielen Dank! Liebe Grüße errox Zitieren
AmunRa Geschrieben 28. September 2009 Geschrieben 28. September 2009 Gibt es vielleicht noch tutorials, die auch die UDP Protokolle erklären und ein gut erklärtes Beispiel, wie man einen Chat erstellt? ( Es muss nicht auf dem Niveau von Diversen Instant-Messaging sein, sondern das Server-Client Prinzip zu testen ) C# oder C++ .NET Liest du eigentlich auch mit oder ist das hier eine One-Man-Show? Ich hatte dir bereits glasklar einen Link gegeben. TCP/IP Socket-Programmierung in C# Dort wird das UDP bis zum Abwinken erklärt, auch das Server-Client Prinzip und sogar ein Chat. Alles sogar mit vielen Codebeispielen. Lesen musst du schon selbst! Zitieren
flashpixx Geschrieben 28. September 2009 Geschrieben 28. September 2009 Also in C++ muss ich Plattformunabhängig bleiben, da ich die Serveranwendung unter Linux zum laufen bringen will. Diese Aussage schließt sich eigentlich aus. Wenn Du für Linux entwickeln willst, dann würde ich auch direkt dafür entwickeln. Wofür brauchst Du noch Plattformunabhängigkeit? Dass mit der Datenbankanbindung ist auch eine Wichtige sache. Die sollte unter MySQL ebenfalls funktionieren, aber ich denke das ist grad meine Größte sorge. Wie gesagt, die Netzwerk- und Datenbankfunktionen sind von Qt wirklich sehr nett (beides habe ich im Einsatz). Wobei auch hier egal ist, welches DBMS Du nimmst, sofern z.B. ODBC Treiber vorhanden sind und Qt entsprechend kompiliert wurde Zitieren
errox Geschrieben 28. September 2009 Autor Geschrieben 28. September 2009 Ich hab mir grad die Seite im geschäft angeguckt. Dort wird der "Weiter" Button angezeigt. Bei mir am HeimPC Weiterhin nicht. Tut mir wirklich leid! MySQL bevorzuge ich eher, da ich eine Registrierung über eine PHP Webseite durchführen will Zitieren
AmunRa Geschrieben 28. September 2009 Geschrieben 28. September 2009 Ich hab mir grad die Seite im geschäft angeguckt. Dort wird der "Weiter" Button angezeigt. Bei mir am HeimPC Weiterhin nicht. Tut mir wirklich leid! Hallo errox, kannst du das mal näher beschreiben? Welcher "Weiter" Button ist nicht zu sehen? Der Graue ganz unten im Artikel? Ich habe das gerade im Firefox 3, Opera und Internet Explorer getestet. Überall wird der Button richtig angezeigt. Ansonsten gibt es noch oben rechts eine Tabelle mit dem Inhaltsverzeichnis. Zitieren
errox Geschrieben 28. September 2009 Autor Geschrieben 28. September 2009 Bei mir wird er schon angezeigt, aber der ist ziemlich grell. Zitieren
AmunRa Geschrieben 28. September 2009 Geschrieben 28. September 2009 Naja, ist auch unwichtig. Wichtig ist der Artikel. Der ist sehr umfangreich, aber da musst du durch, wenn du wirklich mit C# in die Netzwerkprogrammierung einsteigen willst. Zitieren
Empfohlene Beiträge
Dein Kommentar
Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.