Könntet ihr mir den Code für folgende Sachen sagen



  • Hallo,
    Ich habe mehere Probleme.
    1. Wie kann ich unter Linux einen Server erstellen (C++, mit Sockets, zum Daten und Dateien transportieren )?
    2. Wie kann ich unter Linux die Serielle Schnittstelle abfragen (Com)?

    Und noch eine Frage, die sich nicht auf Linux bezieht (ích wollte keinen neuen Thread aufmachen):
    Wie kann ich unter Windows einen Clienten zu dem Linux Server erstellen?

    Könntet ihr mir möglichst eine Internet Seite nennen?

    Danke

    So,
    dann schonmal vielen Dank. 🙂

    [ Dieser Beitrag wurde am 07.01.2003 um 12:11 Uhr von mwolter editiert. ]



  • http://zeus.fh-brandenburg.de/~ihno/lehre/netzwerk/client.html#getip

    für die sockets.. gibts noch einige mehr adressen.. erstmal diese



  • Server wird ich mit Python machen, da es damit sehr sehr einfach und schnell geht!
    Einen Client für Windows (?), kannst du auch mit Python machen.
    Generell brauchst du im Netzwerkkram keinen Unterschied zwischen Windows, Linux zu machen, da die Protokolle (wie bspw. TCP/IP, FTP, HTTP) hardware-/plattformunabhängig sind.

    Wenn du aber lieber C/++ nutzen willst musst du die Socket-API von Berkeley unter Linux und WinSock-API (unterscheiden sich nur geringfügig) unter Windows benutzen.



  • Original erstellt von ºgrimmsenº®:
    **Server wird ich mit Python machen, da es damit sehr sehr einfach und schnell geht!
    Einen Client für Windows (?), kannst du auch mit Python machen.
    Generell brauchst du im Netzwerkkram keinen Unterschied zwischen Windows, Linux zu machen, da die Protokolle (wie bspw. TCP/IP, FTP, HTTP) hardware-/plattformunabhängig sind.

    Wenn du aber lieber C/++ nutzen willst musst du die Socket-API von Berkeley unter Linux und WinSock-API (unterscheiden sich nur geringfügig) unter Windows benutzen.**

    Das die Protokolle sich nicht unterscheiden ist mir auch klar, das meinte ich aber auch nicht. Sondern das der Code unter Linux anders ist als unter Windows.
    Deshalb suche ich auch die verschiedenen Codes. (Den für den Sever unter LINUX und den für den Clienten unter Windows)
    Beides soll mit C++ geschrieben werden, halt nur auf den Verschiedenen OS'en.

    Danke für Antworten und Hilfe.



  • in den links oben stehen server und clients.. muss du noch nach c++ ummodeln...

    und wenn du "server client socket c++" bei google eingibst, wirst du überschüttet damit 😉



  • Noch ein paar Links

    http://www.faqs.org/faqs/unix-faq/socket/

    und noch ein Buch Tipp:
    Programmieren von UNIX Netzwerken von W. Richard Stevens



  • Hi hat jemand von euch schon mal in C++ einen Client geschrieben, der einen beliebigen Puffer verschicken kann, der von jedem Datentyp sein kann?
    Ich steh nämlich grad vor dem Problem, dass ich eine ganze Struktur empfangen, bzw verschicken soll. Ich habe keine Ahnung wie das mit der WSA funktionieren soll, da hier alle send und recv Funktionen nur auf const char* ausgelegt sind. Muss ich in dem Fall erst eine Funktion schreiben, die mir die ganze Struktur (70 members), in einen String übersetzt und an der Gegenstelle auch wieder parst? Das wäre ja mal echt Steinzeit.. in Delphi ging das schon vor 4 Jahren ganz einfach mit dem ClientSocket Objekt. Dies gibt es ja offenbar auch in der System.dll aber wenn ich die einbinde, dann rastet mein VisualC++ 5.0 völlig aus und sagt, dass ich die /clr Option mit irgendeiner anderen Funktion nicht verwenden darf. Diesen fehler habe ich mittlerweile behoben, aber jetzt kommt ein weiterer kommandozeilenfehler, der nicht mehr mit der google suche zu beheben ist... ich such schon seit zwei Tagen nach einer Bibliothek, die mir diese Kopfschmerzen abnimmt, komme aber keinen schritt weiter.

    HILFEEEE!

    Lg Martin



  • send(s, reinterpret_cast<char*>(&strukturinstanz), sizeof(strukturinstanz), 0);



  • du könntest entweder fertige Serealisierungsfunktionen nehmen (wie z.B. aus Boost) oder versuchen, deine Objekte selbst zu deserialisieren (und dann wieder zu serealisieren). Anders wirst du keine Möglichkeit haben^^



  • send(s, reinterpret_cast<char*>(&strukturinstanz), sizeof(strukturinstanz), 0);

    Würde man bei dieser Methode nicht Probleme mit Little/Big Endian bekommen, wenn der andere Rechner ein anderes Format benutzt?



  • Jap, würde man. Deshalb werden plattformunabhängige Binärformate auch so spezifiziert, dass die Ablagereihenfolge der Bytes festgelegt ist. Meist ist das die "natürliche" Ablage, sprich Big Endian.

    Ich würde solche Formate auch nicht (mehr 😉 ) über Strukturen legen, sondern byteweise parsen und die jeweiligen Bits eines Wertes in eine Zielvariable schubsen. Da geht bei Konstrukten wie (byte3 << 😎 | byte4 auch die Ausrichtung nicht flöten.


Log in to reply