Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » C / C++ (WinAPI, Konsole) » Brauche Hilfe bei Programmierung für Verzeichnisbrowser

Forum | Hilfe | Team | Links | Impressum | > Suche < | Mitglieder | Registrieren | Einloggen
  Quicklinks: MSDN-Online || STL || clib Reference Grundlagen || Literatur || E-Books || Zubehör || > F.A.Q. < || Downloads   

Autor Thread - Seiten: [ 1 ] > 2 <
010
20.12.2006, 07:48 Uhr
FloSoft
Medialer Over-Flow
(Administrator)


stdio.h ist C
cstdio ist C++

Ansonsten muss erster und Zweiter gefundener Pfad nicht . und .. sein
--
class God : public ChuckNorris { };
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
011
20.12.2006, 15:38 Uhr
0xdeadbeef
Gott
(Operator)


Das sieht mir alles sehr WinAPIg aus.

-->
--
Einfachheit ist Voraussetzung für Zuverlässigkeit.
-- Edsger Wybe Dijkstra
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
012
22.12.2006, 12:03 Uhr
weed



jo ok, dann google ich später mal nach cstdio.h...

Hab jetzt im übrigen ein neues Problem beim Erweitern
meines überaus nützlichen (LOL) Programms.


C++:
#include <iostream>
#include <string>
#include <windows.h>
#include <winsock2.h>
using namespace std;

int startWinsock(void) {
  WSADATA wsa;
  return WSAStartup(MAKEWORD(2,0),&wsa);
}

int main (int argc, char *argv[]) {
    // .....  Programmname und Copyright zuerst zeigen LOL
    cout << "--- Dateibrowser fuer Arme (c) by weed ---" << endl << endl;
    
    // .....  Verzeichnis-Pfad, von dem Dateien aufgelistet oder angelegt werden sollen. [Start-Pfad]
    string path = "C:/";

    string eingabe;
    int fnr;
    while (true) {
      cout << "Dir> " << path << endl;
      getline (cin, eingabe);
      
      if (eingabe == "exit") {
        exit (0);
      } else if (eingabe == "files") {
        // .....  Trennstrich oben.
        cout << endl << "--- --- --- ---" << endl;
            
        // .....  Dateien im Verzeichnis auflisten.
        HANDLE fHandle;
        WIN32_FIND_DATA wfd;
        fHandle = FindFirstFile((path+"*").c_str(), &wfd); // [.] interessiert Keinen.
        FindNextFile (fHandle, &wfd); // [..] auch.
        fnr = 0; while (FindNextFile(fHandle, &wfd)) {
          cout << "["<<fnr<<"] " << wfd.cFileName << "   -   " << wfd.nFileSizeHigh << endl;
          fnr++;
        }
        FindClose (fHandle);

        // .....  Trennstrich unten.
        cout << "--- --- --- ---" << endl << endl;
      } else if (eingabe == "iReceive") {
        cout << "Zu welchem Webserver verbinden?" << endl;
        char host[100];
        cin >> host;
            
        // .....  Trennstrich oben.
        cout << endl << "--- --- --- ---" << endl;
        
        long rc = startWinsock();
        if (rc != 0) {
          printf ("Fehler: startWinsock, fehler code: %d\n", rc);
        } else {
          printf ("Winsock gestartet!\n");
          SOCKET s;
          SOCKADDR_IN addr;
          char buf[1000];

          s = socket(AF_INET, SOCK_STREAM, 0);
          if (s == INVALID_SOCKET) {
            printf ("Fehler: Der Socket konnte nicht erstellt werden, fehler code: %d\n", WSAGetLastError());
          } else {
            printf ("Socket erstellt!\n");

            memset (&addr, 0, sizeof(SOCKADDR_IN)); // zuerst alles auf 0 setzten
            addr.sin_family = AF_INET;
            addr.sin_port = htons(80);
            addr.sin_addr.s_addr=inet_addr(host);

            rc = connect(s, (SOCKADDR*)&addr, sizeof(SOCKADDR));
            if(rc == SOCKET_ERROR) {
              printf ("Fehler: connect gescheitert, fehler code: %d", WSAGetLastError());
            } else {
              printf ("Verbunden mit %s..\n", host);
        
              char senden[100];

              sprintf (senden, "GET /test.php?test=test HTTP/1.0\r\nHost: %s\r\n\r\n", host);
              rc = send(s, senden, 100, 0);
              rc = recv(s, buf, 1000, 0);
              cout << "--- --- --- ---" << endl;
              printf (buf);
            }
          }
        }
        
        // .....  Trennstrich unten.
        cout << endl << "--- --- --- ---" << endl << endl;
      } else {
        cout << endl << "???: " << eingabe << endl;    
      }
    }

    return 0;
}


Undzwar habe ich in mein Programm die Eingabe
iReceive hinzugefügt. Beim entern von iReceive
wird man nach einer hostIp gefragt.
Zu der verbindet sich der socket und gibt
den Receive aus.

Jetzt zu den Problemen:
1. Bis jetzt konnte ich mich so nur zu funpic verbinden.
2. war der Receive leider nur ein "Not found" ist, wobei test.php existiert!
3. Wenn ich versuche, mich mit google zu verbinden: problembericht senden|nicht senden
4. Ich weiß nicht, wie man die sockets wieder sauber schliesst und zerstört.

Wenn mir da jemand weiterhilft, wäre toll...
--
lol Signatur lol

Dieser Post wurde am 22.12.2006 um 12:23 Uhr von weed editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
013
22.12.2006, 13:46 Uhr
FloSoft
Medialer Over-Flow
(Administrator)


nix cstdio.h, einfach nur cstdio

Ansonsten: du machst nen HTTP1.1 anfrage (Host: ...) sendest aber 1.0 -> dein host-header wird ignoriert.

Socket schließen: closesocket

normalerweise bei http setzt man die sendeleitung nach dem request auf closed (funktion dazu heißt shutdown)
--
class God : public ChuckNorris { };
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
014
22.12.2006, 15:40 Uhr
weed



Auf 1.1 umgeändert kein Unterschied.
mein Server sagt als Receive, /test.php ist nicht vorhanden.
Isses aber!
--
lol Signatur lol
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: [ 1 ] > 2 <     [ C / C++ (WinAPI, Konsole) ]  


ThWBoard 2.73 FloSoft-Edition
© by Paul Baecher & Felix Gonschorek (www.thwboard.de)

Anpassungen des Forums
© by Flo-Soft (www.flo-soft.de)

Sie sind Besucher: