Ergebnis 1 bis 2 von 2
  1. #1
    Fortgeschrittener
    Registriert seit
    23.03.2009
    Beiträge
    35

    Frage [C] pop3 client funzt nicht...

    Ich weiss nicht was ich falsch mache...
    hat mir jemand ein tipp??

    main.c
    Code:
    #include <stdio.h>
    #include <windows.h>
    #include <winsock2.h>
    #include "mail.h"
    using namespace std;
    int main(int argc, char *argv[])
    {  
    int port = 1836;
      SOCKET s;
      long rc;
      printf("-=-=-=-=-=-=-=-=-=-=-=-=-==-=-=-=-=-=-=-=-\n");
      printf("                                  MAIL               \n");
      printf("-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-\n\n");
      rc = startup();
      if(rc != 0)
      {
            printf("Verbindung Fehlgeschlagen: startup()\n");
            system("pause");
            return -1;
      }
      s = socket(AF_INET,SOCK_STREAM,IPPROTO_TCP);
      if(s==SOCKET_ERROR)
      {
            printf("Verbindung Fehlgeschlagen: socket()\n");
            system("pause");
            return -1;
      }
      SOCKADDR_IN addr;
      addr.sin_family = AF_INET;
      addr.sin_port = htons(110);
      addr.sin_addr.s_addr = inet_addr("195.186.81.55");
      printf("connect...\n");
      rc = connect(s,(SOCKADDR*)&addr,sizeof(addr));
      if(rc == -1)
      {
            printf("Verbindung Fehlgeschlagen: connect()\n");
            system("pause");
            return -1;
      }
      char aaa[100];
      recv(s,aaa,strlen(aaa),0);
      doo(aaa);
      while(1)
      {
      char buffer[100];
      char auth[100];
      printf("AUTH: ");
      gets(auth);
      strcat(auth,"\r\n");
      send(s,auth,strlen(auth),0);
      rev(s,buffer);
      doo(buffer);
      memset(buffer,'0',strlen(buffer));
      }
      system("pause");
      return 0;
    }
    mail.h
    Code:
    int startup()
    {
        WSADATA wsa;
        return WSAStartup(MAKEWORD(2,0),&wsa);
    }
    int sen(SOCKET s,char *buffer)
    {
        int a;
        a = send(s,buffer,strlen(buffer),0);
        if(a<0)
        {
               return -1;
        }
        return 0;
    }
    int rev(SOCKET s,char *buffer)
    {
        char b[0];
        char a[strlen(buffer)];
        int i;
        for(i=0;i<strlen(buffer);i++)
        {
            recv(s,buffer,strlen(b),0);
            a[i] = buffer[0];
        }
        buffer = a;
        return 0;
    }
    void doo(char *buffer)
    {
         int i=0;
         for(i=0;i<strlen(buffer);i++)
         {
             printf( "%c" , buffer[i] );
         }
    }


    Als erstes sollte eigentlich: +OK Dovecot Ready. stehen.
    usw..
    Geändert von SUCHTI (01.11.2010 um 10:12 Uhr)

  2. #2
    Stiller Leser Avatar von Ethon
    Registriert seit
    28.10.2010
    Beiträge
    4

    Standard

    Hallo,

    dein Code weist grobe Fehler auf. Abgesehen davon dass Errorchecking & handling praktisch nicht vorhanden ist, machst du Sachen die einfach verboten sind. Welcher Compiler lässt soetwas durchgehen? VC++ sicher nicht.


    Zum Beispiel

    int rev(SOCKET s,char *buffer)
    {
    char b[0];
    char a[strlen(buffer)];
    int i;
    for(i=0;i<strlen(buffer);i++)
    {
    recv(s,buffer,strlen(b),0);
    a[i] = buffer[0];
    }
    buffer = a;
    return 0;
    }
    b ist ein Array ohne Elemente, von daher wirst du a.) einen Segmention Fault verursachen bzw da es eine Stackvariable ist b.) komplett zufällige Bytes haben, dh. dein strlen(b) bringt absolut nichts sinnvolles.

    a versuchst du mit einer dynamischen Anzahl an Elementen zu deklarieren, was aber nicht möglich ist! Für dynamischen Speicher solltest du malloc/free nutzen.
    Da müsste jeder Compiler abbrechen.

    Dann weist du auch noch buffer die Addresse einer lokalen variable zu.

    Was das "using namespace std;" soll verstehe ich auch nicht, das ist C Code ohne den Anflug von C++ .

    Ich rate dir nochmal die Grundlagen von C zu lernen und zu verstehen.
    Dem Code nach zu folgen fehlt da einiges an Grundwissen.

    Mfg,
    Ethon

Ähnliche Themen

  1. Hello World funzt nicht!
    Von G0dLik3 im Forum C, C++
    Antworten: 7
    Letzter Beitrag: 13.09.2007, 15:33

Stichworte

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •