code wird nicht ausgeführt
-
Hallo!
Ich habe ein SEHR grosses problem:
ich muss eine datei auf einen Server hochladen. dazu habe ich ein PHP script geschrieben, welches dann die datei mit den übergabe parametern erstllen soll.Meine DLL soll die hochzuladende datei einlesen, und dann mit einem POST-Request 'hochladen'.
bis gestern hat das auch wnderbar gecklappt, aber heute hat sich dass Programm plötztlich ab dem dll-aufruf immer aufgehängt.
also hab ich mir die mühe gemacht, und die dLL- function in ein eigenständiges programm umgewandelt. als immernoch nichts passiert ist, habe ich glaeich nach int main() ein 'printf("a");' angefügt. aber da geht kein konsolen fenster auf, kein 'a' wird ausgegeben, absolut NICHTS!!!kann mir irgendjemand sagen was ich da falsch gemacht habe??
hier der Code:
int main() { printf("x"); FILE *file= fopen( "srvlst.tsc", "r" ); //Datei zum Lesen öffnen. if (0==file) { //Fehler, die Datei konnte nicht geöffnet werden } fseek( file, 0, SEEK_END ); //Dateizeiger ans Ende setzen size_t fileSize= ftell( file ); //Dateizeiger abfragen fclose( file ); //Datei wieder schließen FILE* f = fopen("srvlst.tsc", "r"); char buf[600]; fgets(buf, fileSize, f); fclose(f); int rc; WSADATA wsadat; SOCKET sock; SOCKADDR_IN addr; LPHOSTENT host; char send_buf[856]; char buf_[256]; printf ("a"); rc = WSAStartup(MAKEWORD(2, 0), &wsadat); if(rc) { return false; } sock = socket(AF_INET, SOCK_STREAM, 0); if(sock == SOCKET_ERROR) { return false; } host = gethostbyname(master_srv); addr.sin_family = AF_INET; addr.sin_port = htons(80); addr.sin_addr = *(LPIN_ADDR)*host->h_addr_list; rc = connect(sock, (LPSOCKADDR)&addr, sizeof(addr)); if(rc == SOCKET_ERROR) { return false; } printf ("b"); wsprintf(send_buf, "POST /xxxx.php HTTP/1.0 \nHost: xxxxxx\nContent-Type: application/x-www-form-urlencoded\nContent-Length: %i\nUser-Agent: TSGolf\nx=%s", fileSize, buf); sendline(sock, send_buf); printf ("c"); f = fopen("TEMP.tmp", "w"); while((rc=recv(sock,buf_,255,0))>0) { fputs(send_buf, f); } fclose(f); printf ("d"); closesocket(sock); WSACleanup(); }
ps: die ganzen 'printf' hab ich nur hingeschrieben, um zu gucken wos hapert.
edit:
#include <stdio.h> int main() { printf("x"); }
das wird auch nicht ausgeführt!?!?!?!?
-
wird sicher ausgeführt, nur schließt das fenster gleich wieder.
mach mal die konsole auf und starte das programm von konsole aus.
welchen compiler nutzt du? wie kompilierst du? gibt es fehlermeldung von konsole aus?
zuwenig infos
-
ich benutzte die wx-Devcpp 6.10 IDE mit GCC.
gelinkt habe ich die wsock32.libcompilieren: ausführen --> kompilieren + ausführen
die konsole zeigt auch kein "a" an. sie springt einfach wieder zur nächsten zeile.
-
Initialisiere "char buf[600]" mal mit 0 bevor "srvlst.tsc" eingelesen wird. Prüf auch mal ob "char buf[600]" gross genug ist für die "srvlst.tsc".
-
ich glaub ich hab den fehler: in sendline wurde der char[600] in ein char[255] kopiert.
zumindest lädt er jetzt wieder hoch!