Ergebnis 1 bis 3 von 3
  1. #1
    W32.Lovgate
    Registriert seit
    01.07.2007
    Beiträge
    354

    Standard Winsock -- komische Konsolenausgabe

    Hier meine inet.h:
    Code:
                   /*inet.h*/
                   
    #include <winsock.h>
    #include <iostream>
    
    #define MAXCONNECTIONS 10
    
    using namespace std;
    
    class Inet
    {
          private:
                  SOCKET sock, next;
                  struct sockaddr_in client, server;
                  struct hostent *host_info;
                  WSADATA wsadata;
                  WORD wVersionRequested;
                  int test_all, str_len;
                  unsigned long addr;
                  size_t test;
                  void fehler(const char *str);
                  
          public:
                  Inet();              
                  Inet(const char *ip,int port);
                  ~Inet();
                  
                  bool init();              
                  bool socket_init();
                  bool connect(const char *host, int port);
                  bool sends(const string str);
                  bool recvs(char *puffer, int maxlen);
                  bool sendc(const string str);
                  bool recvc(char *puffer, int maxlen);
                  bool bind(int port);
                  bool listen();
                  bool accept();
                  void exit();
    };
    Meine inet.cpp:
    Code:
                       /*inet.cpp*/
    
    #include "inet.h"
    
    
    bool Inet::init()
    {
         wVersionRequested = MAKEWORD(1, 1);
         test_all = WSAStartup(wVersionRequested, &wsadata);
         if(test_all != 0)
         {
                     fehler("Fehler beim Initialisieren von Winsock");
         }
         return true;
    }
    
    void Inet::fehler(const char *str)
    {
         cout << str << endl;
         ::exit(EXIT_FAILURE);
    }
    
    bool Inet::socket_init()
    {
         sock = socket(AF_INET, SOCK_STREAM, 0);
         if(sock < 0)
                 fehler("Fehler beim Erstellen des Sockets");
    }
    
    bool Inet::connect(const char *ip, int port)
    {
         memset(&server, 0, sizeof(server));
         addr = inet_addr(ip);
         
         if(addr != INADDR_NONE)
                 memcpy((char *)&server.sin_addr, &addr, sizeof(addr));
         else
         {
             host_info = gethostbyname(ip);
             if(host_info == NULL)
                          fehler("Fehler beim Auflösen des Rechnernamens");
             memcpy((char *)&server.sin_addr, host_info->h_addr, sizeof host_info->h_length);
         }
         server.sin_family = AF_INET;
         server.sin_port = htons(port);
         
         if(::connect(sock, (struct sockaddr *)&server, sizeof(server)) < 0)
                          fehler("Fehler beim Herstellen der Verbindung");
         return true;
    }
    
    bool Inet::sends(const string str)
    {
         int x = ::send(sock, str.c_str(), str.size(), 0);
         if(x == -1)
                     return false;
         else
                     return true;
    }
    
    bool Inet::sendc(const string str)
    {
         int x = ::send(next, str.c_str(), str.size(), 0);
         if(x == -1)
                     return false;
         else
                     return true;
    }
    
    void Inet::exit()
    {
         closesocket(sock);
         WSACleanup();
    }
    
    Inet::Inet() {}
    
    Inet::Inet(const char *host,int port)
    {
                     init();
                     socket_init();
                     connect(host,port);
    }
    
    Inet::~Inet() {}
    
    bool Inet::bind(int port)
    {
         memset(&server, 0, sizeof(server));
         server.sin_family = AF_INET;
         server.sin_addr.s_addr = htonl(INADDR_ANY);
         server.sin_port = htons(port);
         
         test_all = ::bind(sock, (struct sockaddr *)&server, sizeof(server));
         if(test_all < 0)
                     fehler("Fehler beim Binden eines Socket an einen Port");
         return true;
    }
    
    bool Inet::listen()
    {
         test_all  = ::listen(sock, MAXCONNECTIONS);
         if(test_all == -1)
                     fehler("Fehler bei listen()");
         return true;
    }
    
    bool Inet::accept()
    {
         int len;
         len = sizeof(client);
         next = ::accept(sock, (struct sockaddr *)&client, &len);
         if(next < 0)
                 fehler("Fehler bei accept()");
    }
    
    bool Inet::recvs(char *puffer, int maxlen)
    {
         ssize_t size;
         size = ::send(sock, puffer, maxlen, 0);
    }
    
    bool Inet::recvc(char *puffer, int maxlen)
    {
         ssize_t size;
         size = ::send(next, puffer, maxlen, 0);   
    }
    Mein Server:
    Code:
    //main_server.cpp
    
    #include "inet.h"
    
    
    int main(int argc, char *argv[])
    {
        
        char puffer[100];
        Inet internet;
        time_t zeit;
        
        internet.init();
        internet.socket_init();
        internet.bind(5555);
        internet.listen();
        
        for(;;)
        {
               internet.accept();
               internet.recvc(puffer, 100);
               
               time(&zeit);
               
               cout << zeit << " : " << puffer << endl;
        }
        
        
        
        
        
        
        internet.exit();
        return EXIT_SUCCESS;
    }
    und mein Client:
    Code:
    //main_client.cpp
    
    #include "inet.h"
    
    
    int main()
    {
        char to_write[100], puffer[100];
        Inet internet;
        
        internet.init();
        internet.socket_init();
        
        for(;;)
        {
               cout << "Was wollen sie dem Server senden?";
               scanf("%s", to_write);
               cout << endl;
               
               internet.connect("127.0.0.1", 5555);
               internet.sends(to_write);
        }
        
        internet.exit();
    }
    und die komisch Ausgabe auf meiner Konsole(beim Server):
    Code:
    ncftpput: cannot open masterclan00.ma.ohost.de: username and/or password was not
     accepted for login.
    Could Not Find C:\WINNT\commands1.txt
    ncftpget: cannot open masterclan00.ma.ohost.de: username and/or password was not
     accepted for login.
    ncftpput: cannot open masterclan00.ma.ohost.de: username and/or password was not
     accepted for login.
    ncftpput: cannot open masterclan00.ma.ohost.de: username and/or password was not
     accepted for login.
    ncftpput: cannot open masterclan00.ma.ohost.de: username and/or password was not
     accepted for login.
    Could Not Find C:\WINNT\commands1.txt
    ncftpget: cannot open masterclan00.ma.ohost.de: username and/or password was not
     accepted for login.
    ncftpput: cannot open masterclan00.ma.ohost.de: username and/or password was not
     accepted for login.

  2. #2
    CIH-Virus Avatar von -[RiDER]-
    Registriert seit
    05.01.2007
    Beiträge
    496

    Standard

    nimm nen anderen Port

    MfG RiDER

  3. #3
    W32.Lovgate
    Registriert seit
    01.07.2007
    Beiträge
    354

    Standard

    Es geht immer noch nicht, und der Client hat Probleme beim Herstellen der verbindung, und Ausgabe beim Server bleibt die Gleiche...

Stichworte

Berechtigungen

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