[C++] Segmentation fault (core dumped)
-
Ich find einfach den verdammten fehler nicht ....
#include <iostream> // sollte klar sein ^^ #include <fstream> // filestream #include <stdexcept> // runtime_error #include <sstream> // stringstream #include <sys/socket.h> // socket(), connect() #include <arpa/inet.h> // sockaddr_in #include <netdb.h> // gethostbyname(), hostent #include <errno.h> // errno using namespace std; #define SERVER "md5.rednoize.com" #define MY_MAX 512 void Getline(int socket, std::stringstream& line) { for(char c; recv(socket, &c, 1, 0) > 0; line << c) { if(c == '\n') { return; } } } void sendall(int socket, const char* const buf , const int size) { int bytesSent = 0; do { int result = send(socket,buf + bytesSent,size-bytesSent ,0); cout << "----debugg " << result << endl; if(result <0) { cout << "error\n"; } bytesSent += result; }while(bytesSent<size); } int main(int argc,char** argv) { //if(argc<2){cout << " Usage: "<< argv[0] << "<md5 hash>\n Example: test.exe a58e7057ce63430500ee8ba74f291893 \n";exit(1);} int sock=socket(AF_INET,SOCK_STREAM,0); if(sock == 0); cout << "[*]Socket erstellt\n"; char unsigned md5hash = 'a58e7057ce63430500ee8ba74f291893'; struct hostent *host; struct sockaddr_in addr; host = gethostbyname(SERVER); memset(&addr,0,sizeof(addr)); addr.sin_family = AF_INET; addr.sin_port = htons(80); addr.sin_addr = *((in_addr *)host->h_addr); if(connect(sock,(sockaddr*)&addr,sizeof(addr)) == 0); cout << "[*]Connected\n"; string request = "GET "; request += "/?s="; request += md5hash; request += "HTTP/1.1\r\nHost: "; request += SERVER ; request += "\r\nConnection: close\r\n\r\n"; cout << "----debugg "<< request << endl; cout << "[~]Send GET\n"; sendall(sock,request.c_str(),request.size()); cout << "[*]Send GET\n"; cout << "[~]Schreibe in Output.html\n"; ofstream fout("Output.html"); while(true) { stringstream line; Getline(sock,line); fout << line.str() << endl; } cout << "[*]Alle Daten in Datei geschrieben\n"; fout.close(); close(sock); cout << "[*]Socket geschlossen\n"; }
-
Dann bitte einen genaueren Fehlerbeschreib. Mit Meldung, die du bekommst, und vor allem genau an welcher Stelle.
Hast du auch schon mal mit dem Debugger geprüft?
-
Verwendest du Windows? Dann musst du wohl vor Verwendung der Sockets WSAStartup oder sowas aufrufen.
-
valgrind hilft auch bei solchen Problemen.
-
ich verwende linux ,
es läßt sich komplimieren nur nach dem start gibt es mir einen Segmentation fault (core dumped) aus , mehr nicht ..
-
threadstarter123 schrieb:
ich verwende linux ,
es läßt sich komplimieren nur nach dem start gibt es mir einen Segmentation fault (core dumped) aus , mehr nicht ..Übliche Vorgehensweise:
Genannte Programme nutzen, oder mal alles auskommentieren und dann Schrittweise einführen, bis der Fehler kommt. Dann hast du die Stelle.
-
gdb meinProgramm core
fertig.
-
threadstarter123 schrieb:
ich verwende linux ,
es läßt sich komplimieren nur nach dem start gibt es mir einen Segmentation fault (core dumped) aus , mehr nicht ..Wenn du das ganze mit dem g++ übersetzt, läßt du dir dann auch alle Warnings ausgeben? Lass das ganze zur Not mal mit der Option "-Wall" laufen.