1. C++ / Говнокод #11473

    +2

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    11. 11
    12. 12
    13. 13
    14. 14
    15. 15
    16. 16
    17. 17
    18. 18
    19. 19
    20. 20
    21. 21
    22. 22
    23. 23
    24. 24
    25. 25
    26. 26
    27. 27
    28. 28
    29. 29
    30. 30
    31. 31
    32. 32
    33. 33
    34. 34
    35. 35
    36. 36
    37. 37
    38. 38
    39. 39
    40. 40
    41. 41
    42. 42
    43. 43
    44. 44
    45. 45
    46. 46
    47. 47
    48. 48
    49. 49
    50. 50
    51. 51
    52. 52
    53. 53
    54. 54
    55. 55
    56. 56
    57. 57
    58. 58
    59. 59
    60. 60
    61. 61
    62. 62
    63. 63
    64. 64
    65. 65
    66. 66
    67. 67
    68. 68
    69. 69
    70. 70
    71. 71
    72. 72
    73. 73
    74. 74
    75. 75
    76. 76
    77. 77
    78. 78
    79. 79
    80. 80
    81. 81
    82. 82
    83. 83
    84. 84
    85. 85
    86. 86
    87. 87
    88. 88
    89. 89
    90. 90
    91. 91
    92. 92
    #include <stdio.h>
    #include <stdlib.h>
    #include <unistd.h>
    #include <string.h>
    #include <sys/types.h>
    #include <sys/socket.h>
    #include <netinet/in.h>
    #include <netdb.h> 
    #include <iostream>
    #include <vector>
    #include <string>
    using namespace std;
    struct user_data{
      char user_name[100];
      char host_name[100];
    }cuser;
    char file_path[100000];
    int sockfd;
    void error(const char *msg){
        perror(msg);
        exit(0);
    }
    char s[128];vector<user_data> users;
    int main(int argc, char *argv[]){
        int portno, n;struct sockaddr_in serv_addr;
        struct hostent *server;
        char buffer[256];
        static char file_name[256];
        if (argc < 2) {
           fprintf(stderr,"usage %s hostname port\n", argv[0]);
           exit(0);
        }
        portno = atoi(argv[1]);
        while(getchar()!='q'){
        sockfd = socket(AF_INET, SOCK_STREAM, 0);
        if (sockfd < 0) 
            error("ERROR opening socket");
        gethostname(s, 128);
        server = gethostbyname(s);
        if (server == NULL) {
            fprintf(stderr,"ERROR, no such host\n");
            exit(0);
        }
        bzero((char *) &serv_addr, sizeof(serv_addr));
        serv_addr.sin_family = AF_INET;
        bcopy((char *)server->h_addr, 
             (char *)&serv_addr.sin_addr.s_addr,
             server->h_length);
        serv_addr.sin_port = htons(portno++);
        if (connect(sockfd,(struct sockaddr *) &serv_addr,sizeof(serv_addr)) < 0) 
            error("ERROR connecting");
        bzero(buffer,256);
        n = write(sockfd,buffer,strlen(buffer));
        if (n < 0) 
             error("ERROR writing to socket");
        bzero(buffer,256);
        n = read(sockfd,buffer,255);
        if (n < 0) 
             error("ERROR reading from socket");
        int sf=0;
        for(int i=0;i<=strlen(buffer)-1;i++){
         if(buffer[i]=='@'){
          sf=i; 
         }
         if(sf==0){
          cuser.user_name[i]=buffer[i]; 
         } else {
          cuser.host_name[i-sf]=buffer[i+1]; 
         }
        }
        users.push_back(cuser);
         cout << cuser.user_name << " hostname: " << cuser.host_name << endl;
        printf("Enter file name:\n");
        fgets(file_name,255,stdin);
            n = write(sockfd,file_name,255);
        if (n < 0) 
             error("ERROR writing to socket");
         bzero(file_name,256);
         n = read(sockfd,file_path,100000);
        if (n < 0) 
             error("ERROR reading from socket");
        printf("\n%s\n",file_path);
        memset(file_path,'\0',100000);
         close(sockfd);
        }
        printf("\n\tRegistered users\n");
       for(int i=0; i < users.size(); i++)
       {
          cout << users[i].user_name << " hostname: " << users[i].host_name << endl;
       }
        close(sockfd);return 0;
    }

    Регистрация клиента на сервере

    Запостил: AliceGoth, 23 Июля 2012

    Комментарии (33) RSS

    • > Регистрация клиента на сервере
      Крик с верхнего этажа борделя вниз:  
      - Мадам Циля! Прикажите кочегарам, чтоб меньше топили! Клиент потеет и сползает!
      Ответить
    • Регистрация сервера на клиенте
      Ответить
    • Это говнокод?
      Ответить
      • Не то слово, только вот ошибки уж больно детские
        Ответить
      • Министерство культуры
        Ответить
      • >Регистрация клиента на сервере
        >AliceGoth, 24 Июля 2012

        >AliceGoth 9 часов назад # +1
        >Это говнокод?

        ах тыж, сука
        Ответить
    • man bzero

      CONFORMING TO
      4.3BSD. This function is deprecated (marked as LEGACY in POSIX.1-2001): use memset(3) in new programs. POSIX.1-2008 removes the specification of bzero().

      man bcopy

      CONFORMING TO
      4.3BSD. This function is deprecated (marked as LEGACY in POSIX.1-2001): use memcpy(3) or memmove(3) in new programs. Note that the first two arguments are interchanged for memcpy(3) and memmove(3). POSIX.1-2008 removes the specification of bcopy().
      Ответить
    • > vector<user_data> users;
      Теперь никто не скажет "Где, здесь c++, AliceGoth"...
      Ответить
    • > for(int i=0;i<=strlen(buffer)-1;i++){
      А за вот это зачёт! Сделаем за O(n^2) то, что обычно делается за O(n).
      Ответить
    • Посмотрел список хидеров, остальное по диагонали...это уныло.
      Ответить
    • а как вам file_path[100000] ?
      Ответить
    • >int porno;
      fxd
      Ответить
    • Ебать ещё одна простыня...
      Ответить
    • Кто скучал по говнокоду за прошедшие 2 дня? :)
      Ответить
      • я, пришлось снова за работу браться... :(
        Ответить
      • Я заходил каждые два часа. Сначала решил, что меня забанили. Даже с телефона, даже через анонимайзер. Но потом решил, что если неймсервер не пингуется, то дело нечисто.
        Ответить
        • Просто тебя даже по ICMP протоколу забанил.
          Чтобы ты мне больше не грубил - будет наука.
          Ответить
          • а надо-то было по ARP
            Ответить
          • Ничего страшного, главное чтобы не было бана по инторнет-паспорту, вот тут уже каюк.
            Ответить
            • главное чтобы не было инторнет-паспорта, вот тут уже каюк
              fxd.
              Ответить
              • Именно. :)
                Ответить
              • Сначала надо получить инторнет-свидетельство-о-рождении
                Ответить
                • Сначала надо родиться в инторнете...
                  Ответить
                  • а чтоб родиться в инторнете, нужно чтоб кто-то там поеб*лся... а этого добра полно.
                    Ответить
                    • Простите, но в инете зачастую не туда кончают, так что...
                      Ответить
              • вэ-вэ-вэ Ленинград...
                Ответить

    Добавить комментарий