C++ socket in fenster

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • C++ socket in fenster

    Hallo,

    ich habe mal wieder ein Problem diesesmal mit C++.
    Da ich nun schon mehrere Stunden hänge will ichs hier mal erklären.

    Ich hab mir das Buch "C++ von A bis Z" gekauft - da ich totaler C++ Anfänger bin, so nun habe ich den folgenden Codeschnipsel:

    Code:
    // get_website.cpp
    #include "clientsock.h"
    #include <string>
    #include <iostream>
    using namespace std;
    
    int main (int argc, char *argv[]) {
       if( argc < 2 ){
          cout << "Usage: " << *argv << " URL\n";
          exit(1);
       }
       string argv_1 = argv[1];
       try {
          ClientSock client_socket ( argv_1, 80 );
          client_socket << "GET / HTTP/1.1\n";
          client_socket << "Host: " << argv_1 << "\n";
          client_socket << "User-Agent: Internet Exploiter\n";
          client_socket << "\n\n";
          try {
             while( true ) {
                string s;
                client_socket >> s;
                cout << s << endl;
                cout.flush();
             }
          }
          catch( SockExcept& ) {};
          client_socket.close();
       }
       catch ( SockExcept& e ) {
          cout << "Ein Exception wurde abgefangen: "
               << e.get_SockExcept() << endl;
       }
       return 0;
    }
    der tuts auch wenn ich ihn über konsole ausführe -> also es stimmt alles soweit, nun wenn ich aber versuche das ganze über wxwidgets zu machen also GUI mäßig kommt dauernd die Meldung:

    "110 I:\C++\fenstersock\fenstersocketFrm.cpp `e' undeclared (first use this function) "

    und so siehts bei mir aus der Teil wo nicht geht:

    Code:
    /*
     * WxButton1Click
     */
    void fenstersocketFrm::WxButton1Click(wxCommandEvent& event)
    {
    	// insert your code here
       string argv_1 = "google.de";
       try {
          ClientSock client_socket ( argv_1, 80 );
          client_socket << "GET / HTTP/1.1\n";
          client_socket << "Host: " << argv_1 << "\n";
          client_socket << "User-Agent: Internet Exploiter\n";
          client_socket << "\n\n";
          try {
             while( true ) {
                string s;
                client_socket >> s;
                WxMemo1->AppendText(wxT(s));
             }
          }
          catch( SockExcept& ) {};
          client_socket.close();
       }
       catch ( SockExcept& e ) {
          cout << "Ein Exception wurde abgefangen: "
               << e.get_SockExcept() << endl;
       }
    
    }
    header sind alle drinne ... also wäre nett wenn mir einer auf die Sprünge helfen könnte - THX schonmal!

    gruß
    Robert

  • #2
    Hi,

    ist das die einzige fehlermeldung ?
    Kann ich mir ehrlich gesagt nicht vorstellen.
    Welche ist die zeile 110 ?

    Der einizige identifier mit namen "e" ist das exceptionobjekt.
    Wenn allerdings die exceptionklasse nicht bekannt wäre, würdest
    du eine andere fehlermeldung erhalten.

    greets
    (((call/cc call/cc) (lambda (x) x)) "Scheme just rocks! and Ruby is magic!")

    Kommentar


    • #3
      zeile 110 ist

      Code:
                 
      << e.get_SockExcept() << endl;
      das is der einzige fehler wobei cout natuerlich fehl am platze ist :P
      jo also wie gesagt konsole geht aber nicht wenn ichs in wxwidgets reinmach.

      gruß
      Robert

      Kommentar


      • #4
        Hi,

        hmm der code sieht gut aus.
        Nimm mal den inneren try-catch-block raus. Der ist ohnehin
        überflüssig. Und schliess den socket im äußeren catch.

        Hat die socketlib nen eigenen namespace ?

        greets
        (((call/cc call/cc) (lambda (x) x)) "Scheme just rocks! and Ruby is magic!")

        Kommentar


        • #5
          hi,

          danke für deine hilfe - geht leider aber immernoch ned
          ansonsten: using namespace std;

          gruß
          Robert

          Kommentar


          • #6
            Ich hab im moment keine möglichkeit es zu testen, aber
            ich kann mir nicht vorstellen, dass der fehler aus dem code kommt.

            Kleine anmerkung: throw by value but catch by const ref.

            greets
            (((call/cc call/cc) (lambda (x) x)) "Scheme just rocks! and Ruby is magic!")

            Kommentar


            • #7
              string argv_1 = "google.de";

              versuch bitte string durch zeiger auf char zu ersetzen
              Slava
              bituniverse.com

              Kommentar


              • #8
                Nee, das ist ein std::string. Der ausdruck ist vollkommen ok.

                Hmm immer noch keine testmöglichkeit, mal schauen wann ich
                dazu komme.

                greets
                (((call/cc call/cc) (lambda (x) x)) "Scheme just rocks! and Ruby is magic!")

                Kommentar

                Lädt...
                X