Hypercell ein ] Hypercell aus ] Zeige Navigation ] Verstecke Navigation ]
c++.de  
   
Forentreff 2012     
Bücher-Shop mit Amazon (Buchkategorien)C++ : Referenzen zu C++ : C++ Builder : Visual C++ : C# : Java : Spieleprogrammierung : Systemprogrammierung Linux : Software-Entwicklung : .NET : Compilertechnik : Algorithmen & Datenstrukturen : Objektorientierung : Entwurfsmuster : UML : eXtreme Programming : Scrum : Projektmanagement : Software-Testing : Datenbanken : Tom DeMarco : Dilbert : User Friendly
C/C++ Forum :: WinAPI ::  Schon wieder WSA...     Zeige alle Beiträge auf einer Seite Auf Beitrag antworten
Autor Nachricht
@night@
Mitglied

Benutzerprofil
Anmeldungsdatum: 26.12.2009
Beiträge: 50
Beitrag @night@ Mitglied 14:55:25 05.01.2010   Titel:   Schon wieder WSA...            Zitieren

heyho!
Eigentlich klappt jetzt alles so, wie es soll... Nun wollte ich eine Funktion schreiben mit der ich schnell eine Seite aufrufen kann, ohne gleich wieder viel am Quelltext zu ändern. Aber jetzt habe ich das problem das ich es einfach nicht gebacken kriege den gesamten Quelltext in einer Variable am Ende der Funktion zurückzugeben...
ich habe jetzt diese Funktion:
C/C++ Code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
string WSARequest(string ip, string host, string seite = "", string post = "", string cookie_str = "")
{
       SOCKET sock;
       if (WSAStart()!=0)
       {
                         cout << "WSA konnte nicht gestartet werden!" << endl;
                         system("pause");
                         return "-1";
       }
       sock = socket(AF_INET, SOCK_STREAM, 0);
       if (sock==INVALID_SOCKET)
       {
                cout << "Socket konnte nicht erstellt werden!" << endl;    
                system("pause");
                return "-1";    
       }
       //================>Ip Adresse konvertieren
       char inet_address[30];
       strcpy(inet_address, ip.c_str());
       //==================>Ip Adresse konvertieren ENDE
       sockaddr_in addr;
       addr.sin_family = AF_INET;
       addr.sin_port = htons(80);
       addr.sin_addr.s_addr = inet_addr(inet_address);
       long rc = connect(sock, (SOCKADDR*)&addr, sizeof(sockaddr));
       if (rc==SOCKET_ERROR)
       {
                            cout << "SOCKET_ERROR: Error beim Verbinden mit " << ip << endl;
                            system("pause");
                            return "-1";
       }
       else
       {
           cout << "Verbindung wurde erfolgreich hergestellt!" << endl;
       }
       //=======================================================================>
       //=================>Verbunden mit Server<================================>
       //=======================================================================>

       string data;
       if (post=="") //wenn kein Post benutzt werden soll
       {
            data = WSAgetDataGet(ip, host, seite, cookie_str);        
       }
       else
       {
           data = WSAgetDataPost(ip, host, post, seite, cookie_str);
       }
       //===>Senden anfang
       char buffer[data.length()+1];
       strcpy(buffer, data.c_str());
       cout << data << endl;
       rc = send(sock, buffer, sizeof(buffer), 0);
       if (rc==SOCKET_ERROR)
       {
                            cout << "Daten konnten nicht versendet werden!" << endl;
                            system("pause");
                            return "-1";
       }
       //=============>SENDEN ENDE
       //=======>EMPFANGEN ANFANG

       strcpy(buffer, "");
       ofstream f("C:/test.html");
       for(;;)
     {
      rc = recv(sock, buffer, sizeof(buffer), 0);
      if(rc == -1)
      {
      cout << "Fehler: " << WSAGetLastError() << '\n';
      break;
      }

      if(rc == 0)
      {
       break;
      }
      f.write(buffer, rc);
     }
     string source;
     source.assign(buffer);
     return source;
       
}
C/C++ Code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
string WSARequest(string ip, string host, string seite = "", string post = "", string cookie_str = "")
{
SOCKET sock;
if (WSAStart()!=0)
{
cout << "WSA konnte nicht gestartet werden!" << endl;
system("pause");
return "-1";
}
sock = socket(AF_INET, SOCK_STREAM, 0);
if (sock==INVALID_SOCKET)
{
cout << "Socket konnte nicht erstellt werden!" << endl;
system("pause");
return "-1";
}
//================>Ip Adresse konvertieren
char inet_address[30];
strcpy(inet_address, ip.c_str());
//==================>Ip Adresse konvertieren ENDE
sockaddr_in addr;
addr.sin_family = AF_INET;
addr.sin_port = htons(80);
addr.sin_addr.s_addr = inet_addr(inet_address);
long rc = connect(sock, (SOCKADDR*)&addr, sizeof(sockaddr));
if (rc==SOCKET_ERROR)
{
cout << "SOCKET_ERROR: Error beim Verbinden mit " << ip << endl;
system("pause");
return "-1";
}
else
{
cout << "Verbindung wurde erfolgreich hergestellt!" << endl;
}
//=======================================================================>
//=================>Verbunden mit Server<================================>
//=======================================================================>

string data;
if (post=="") //wenn kein Post benutzt werden soll
{
data = WSAgetDataGet(ip, host, seite, cookie_str);
}
else
{
data = WSAgetDataPost(ip, host, post, seite, cookie_str);
}
//===>Senden anfang
char buffer[data.length()+1];
strcpy(buffer, data.c_str());
cout << data << endl;
rc = send(sock, buffer, sizeof(buffer), 0);
if (rc==SOCKET_ERROR)
{
cout << "Daten konnten nicht versendet werden!" << endl;
system("pause");
return "-1";
}
//=============>SENDEN ENDE
//=======>EMPFANGEN ANFANG

strcpy(buffer, "");
ofstream f("C:/test.html");
for(;;)
{
rc = recv(sock, buffer, sizeof(buffer), 0);
if(rc == -1)
{
cout << "Fehler: " << WSAGetLastError() << '\n';
break;
}

if(rc == 0)
{
break;
}
f.write(buffer, rc);
}
string source;
source.assign(buffer);
return source;

}
C/C++ Code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
string WSARequest(string ip, string host, string seite = "", string post = "", string cookie_str = "")
{
       SOCKET sock;
       if (WSAStart()!=0)
       {
                         cout << "WSA konnte nicht gestartet werden!" << endl;
                         system("pause");
                         return "-1";
       }
       sock = socket(AF_INET, SOCK_STREAM, 0);
       if (sock==INVALID_SOCKET)
       {
                cout << "Socket konnte nicht erstellt werden!" << endl;    
                system("pause");
                return "-1";    
       }
       //================>Ip Adresse konvertieren
       char inet_address[30];
       strcpy(inet_address, ip.c_str());
       //==================>Ip Adresse konvertieren ENDE
       sockaddr_in addr;
       addr.sin_family = AF_INET;
       addr.sin_port = htons(80);
       addr.sin_addr.s_addr = inet_addr(inet_address);
       long rc = connect(sock, (SOCKADDR*)&addr, sizeof(sockaddr));
       if (rc==SOCKET_ERROR)
       {
                            cout << "SOCKET_ERROR: Error beim Verbinden mit " << ip << endl;
                            system("pause");
                            return "-1";
       }
       else
       {
           cout << "Verbindung wurde erfolgreich hergestellt!" << endl;
       }
       //=======================================================================>
       //=================>Verbunden mit Server<================================>
       //=======================================================================>

       string data;
       if (post=="") //wenn kein Post benutzt werden soll
       {
            data = WSAgetDataGet(ip, host, seite, cookie_str);        
       }
       else
       {
           data = WSAgetDataPost(ip, host, post, seite, cookie_str);
       }
       //===>Senden anfang
       char buffer[data.length()+1];
       strcpy(buffer, data.c_str());
       cout << data << endl;
       rc = send(sock, buffer, sizeof(buffer), 0);
       if (rc==SOCKET_ERROR)
       {
                            cout << "Daten konnten nicht versendet werden!" << endl;
                            system("pause");
                            return "-1";
       }
       //=============>SENDEN ENDE
       //=======>EMPFANGEN ANFANG

       strcpy(buffer, "");
       ofstream f("C:/test.html");
       for(;;)
     {
      rc = recv(sock, buffer, sizeof(buffer), 0);
      if(rc == -1)
      {
      cout << "Fehler: " << WSAGetLastError() << '\n';
      break;
      }

      if(rc == 0)
      {
       break;
      }
      f.write(buffer, rc);
     }
     string source;
     source.assign(buffer);
     return source;
       
}

Das der Quellcode in eine Datei geschrieben wird, steht da nur zur kontrolle.
Jetzt würde ich gerne den gesamten Quelltext in einer Variable, die den datentyp std::string hat, zurückgeben...
mfg
@night@


Zuletzt bearbeitet von @night@ am 14:58:55 05.01.2010, insgesamt 2-mal bearbeitet
a
Unregistrierter




Beitrag a Unregistrierter 15:50:03 05.01.2010   Titel:              Zitieren

C/C++ Code:
f.write(buffer, rc);
source.append(buffer, rc);
C/C++ Code:
f.write(buffer, rc);
source.append(buffer, rc);
C/C++ Code:
f.write(buffer, rc);
source.append(buffer, rc);
@night@
Mitglied

Benutzerprofil
Anmeldungsdatum: 26.12.2009
Beiträge: 50
Beitrag @night@ Mitglied 17:02:12 05.01.2010   Titel:              Zitieren

danke dir :live:
C/C++ Forum :: WinAPI ::  Schon wieder WSA...   Auf Beitrag antworten

Zeige alle Beiträge auf einer Seite




Nächstes Thema anzeigen
Vorheriges Thema anzeigen
Sie können Beiträge in dieses Forum schreiben.
Sie können auf Beiträge in diesem Forum antworten.
Sie können Ihre Beiträge in diesem Forum nicht bearbeiten.
Sie können Ihre Beiträge in diesem Forum nicht löschen.
Sie können an Umfragen in diesem Forum nicht mitmachen.

Powered by phpBB © 2001, 2002 phpBB Group :: FI Theme

c++.de ist Teilnehmer des Partnerprogramms von Amazon Europe S.à.r.l. und Partner des Werbeprogramms, das zur Bereitstellung eines Mediums für Websites konzipiert wurde, mittels dessen durch die Platzierung von Werbeanzeigen und Links zu amazon.de Werbekostenerstattung verdient werden kann.

Die Vervielfältigung der auf den Seiten www.c-plusplus.de, www.c-plusplus.info, www.c-sar.de, www.c-plusplus.net und www.baeckmann.de enthaltenen Informationen ohne eine schriftliche Genehmigung des Seitenbetreibers ist untersagt (vgl. §4 Urheberrechtsgesetz). Die Nutzung und Änderung der vorgestellten Strukturen und Verfahren in privaten und kommerziellen Softwareanwendungen ist ausdrücklich erlaubt, soweit keine Rechte Dritter verletzt werden. Der Seitenbetreiber übernimmt keine Gewähr für die Funktion einzelner Beiträge oder Programmfragmente, insbesondere übernimmt er keine Haftung für eventuelle aus dem Gebrauch entstehenden Folgeschäden.