Verarscht mich mein Compiler?

Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

  • Verarscht mich mein Compiler?

    Heho, ich würde gern mal schnell wissen, ob mich mein
    Compiler verarscht oder ich wohl vielleicht eine falsche
    Einstellung unter den Optionen habe, denn:

    Quellcode

    1. #include <windows.h>
    2. #include <winsock2.h>
    3. #include <stdio.h>
    4. #include <string>
    5. #include <iostream>
    6. //Prototypen
    7. int startWinsock(void);
    8. SOCKET s;
    9. SOCKADDR_IN addr;
    10. int main() {
    11. long rc;
    12. rc = startWinsock();
    13. if (rc != 0) {
    14. printf ("Fehler: startWinsock, fehler code: %d\n",rc);
    15. return 1;
    16. } else {
    17. printf ("Winsock gestartet!\n");
    18. }
    19. s = socket(AF_INET, SOCK_STREAM, 0);
    20. if (s == INVALID_SOCKET) {
    21. printf ("Fehler: Der Socket konnte nicht erstellt werden, fehler code: %d\n", WSAGetLastError());
    22. return 1;
    23. } else {
    24. printf ("Socket erstellt!\n");
    25. }
    26. string host = "http://www.google.de";
    27. string host_ip = gethostbyname(host);
    28. memset (&addr, 0, sizeof(SOCKADDR_IN));
    29. addr.sin_family = AF_INET;
    30. addr.sin_port = htons(80);
    31. addr.sin_addr.s_addr = inet_addr(host_ip);
    32. rc = connect(s,(SOCKADDR*)&addr, sizeof(SOCKADDR));
    33. if(rc == SOCKET_ERROR) {
    34. printf ("Verbindung fehlgeschlagen!\n", WSAGetLastError());
    35. return 1;
    36. } else {
    37. printf ("Verbunden!\n");
    38. }
    39. return 0;
    40. }
    41. int startWinsock(void) {
    42. WSADATA wsa;
    43. return WSAStartup(MAKEWORD(2,0),&wsa);
    44. }
    Alles anzeigen


    er liefert bei dem Code da oben:

    30 C:\Dokumente und Einstellungen\X\Desktop\Unbenannt1.cpp `string' undeclared (first use this function)
  • Geändert, immernoch der selbe Fehler.
    Code:

    Quellcode

    1. #include <windows.h>
    2. #include <winsock2.h>
    3. #include <string>
    4. #include <iostream>
    5. using namespace std;
    6. //Prototypen
    7. int startWinsock(void);
    8. SOCKET s;
    9. SOCKADDR_IN addr;
    10. int main() {
    11. long rc;
    12. rc = startWinsock();
    13. if (rc != 0) {
    14. printf ("Fehler: startWinsock, fehler code: %d\n",rc);
    15. return 1;
    16. } else {
    17. printf ("Winsock gestartet!\n");
    18. }
    19. s = socket(AF_INET, SOCK_STREAM, 0);
    20. if (s == INVALID_SOCKET) {
    21. printf ("Fehler: Der Socket konnte nicht erstellt werden, fehler code: %d\n", WSAGetLastError());
    22. return 1;
    23. } else {
    24. printf ("Socket erstellt!\n");
    25. }
    26. string host = "http://www.google.de";
    27. string host_ip = gethostbyname(host);
    28. memset (&addr, 0, sizeof(SOCKADDR_IN));
    29. addr.sin_family = AF_INET;
    30. addr.sin_port = htons(80);
    31. addr.sin_addr.s_addr = inet_addr(host_ip);
    32. rc = connect(s,(SOCKADDR*)&addr, sizeof(SOCKADDR));
    33. if(rc == SOCKET_ERROR) {
    34. printf ("Verbindung fehlgeschlagen!\n", WSAGetLastError());
    35. return 1;
    36. } else {
    37. printf ("Verbunden!\n");
    38. }
    39. return 0;
    40. }
    41. int startWinsock(void) {
    42. WSADATA wsa;
    43. return WSAStartup(MAKEWORD(2,0),&wsa);
    44. }
    Alles anzeigen
  • Es ist garnicht der selbe Fehler.
    Diesmal meckert er hier:

    31 C:\Dev-Cpp\lib\main.cpp cannot convert `std::string' to `const char*' for argument `1' to `hostent* gethostbyname(const char*)'
    35 C:\Dev-Cpp\lib\main.cpp cannot convert `std::string' to `const char*' for argument `1' to `long unsigned int inet_addr(const char*)'

    aber das löse ich dir nicht. Ich hab dir schonmal gezeigt wie eine DNS Anfrage aussehen kann/soll. Wenn du das umschreibst ohne zu wissen WAS du umschreibst, ist es kein Wunder dass am Ende nix geht.
    Entweder du übernimmst die DNS Anfrage von mir oder du schlägst nach wie sie noch aussehen kann.