![]() |
Внимание, важное сообщение: Дорогие Друзья!
В ноябре далекого 2001 года мы решили создать сайт и форум, которые смогут помочь как начинающим, так и продвинутым пользователям разобраться в операционных системах. В 2004-2006г наш проект был одним из самых крупных ИТ ресурсов в рунете, на пике нас посещало более 300 000 человек в день! Наша документация по службам Windows и автоматической установке помогла огромному количеству пользователей и сисадминов. Мы с уверенностью можем сказать, что внесли большой вклад в развитие ИТ сообщества рунета. Но... время меняются, приоритеты тоже. И, к сожалению, пришло время сказать До встречи! После долгих дискуссий было принято решение закрыть наш проект. 1 августа форум переводится в режим Только чтение, а в начале сентября мы переведем рубильник в положение Выключен Огромное спасибо за эти 24 года, это было незабываемое приключение. Сказать спасибо и поделиться своей историей можно в данной теме. С уважением, ваш призрачный админ, BigMac... |
|
Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Программирование и базы данных » C/C++ - Слепить(все готовое) клиент, сервер и crc???!!! |
|
C/C++ - Слепить(все готовое) клиент, сервер и crc???!!!
|
Пользователь Сообщения: 96 |
Здравствуйте, такая вот досада, с бухты барахты нужно сделать вот такую вот программу. Как то проверять на ошибки сообщение к серверу, я же давным давно на "С" ничего не делал. И куча констант и так д.. половину синтаксиса не понятно.
В общем прошу помощи! Весь код имеется, нужно только чуток допилить. Нужно проверить сообщение которое отсылается на сервер с помощью CRC-суммы. Если не сходится crc, то отсылать заново. Сервер. #include <stdio.h> #include <stdlib.h> #include <string.h> #include <unistd.h> #include <sys/types.h> #include <sys/socket.h> #include <netinet/in.h> void error(const char *msg) { perror(msg); exit(1); } int main(int argc, char *argv[]) { int sockfd, newsockfd, portno; socklen_t clilen; char buffer[256]; struct sockaddr_in serv_addr, cli_addr; int n; //if (argc < 2) { // fprintf(stderr,"ERROR, no port provided\n"); // exit(1); //} sockfd = socket(AF_INET, SOCK_STREAM, 0); if (sockfd < 0) error("ERROR opening socket"); bzero((char *) &serv_addr, sizeof(serv_addr)); // set SO_REUSEADDR on a socket to true (1): int optval = 1; setsockopt(sockfd, SOL_SOCKET, SO_REUSEADDR, &optval, sizeof optval); //portno = atoi(argv[1]); portno = 3334; serv_addr.sin_family = AF_INET; serv_addr.sin_addr.s_addr = INADDR_ANY; serv_addr.sin_port = htons(portno); if (bind(sockfd, (struct sockaddr *) &serv_addr, sizeof(serv_addr)) < 0) error("ERROR on binding"); listen(sockfd,5); clilen = sizeof(cli_addr); newsockfd = accept(sockfd, (struct sockaddr *) &cli_addr, &clilen); if (newsockfd < 0) error("ERROR on accept"); bzero(buffer,256); n = read(newsockfd,buffer,255); if (n < 0) error("ERROR reading from socket"); printf("Here is the message: %s\n",buffer); n = write(newsockfd,"I got your message",18); if (n < 0) error("ERROR writing to socket"); close(newsockfd); close(sockfd); return 0; } #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> void error(const char *msg) { perror(msg); exit(0); } int main(int argc, char *argv[]) { int sockfd, portno, n; struct sockaddr_in serv_addr; struct hostent *server; char buffer[256]; //if (argc < 3) { // fprintf(stderr,"usage %s hostname port\n", argv[0]); // exit(0); //} portno = 3334; //atoi(argv[2]); sockfd = socket(AF_INET, SOCK_STREAM, 0); if (sockfd < 0) error("ERROR opening socket"); //server = gethostbyname(argv[1]); server = gethostbyname("127.0.0.1"); 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"); printf("Please enter the message: "); bzero(buffer,256); fgets(buffer,255,stdin); 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"); printf("%s\n",buffer); close(sockfd); return 0; } #include <stdio.h> long int ll = 0; unsigned int hackers_delight_crc32(unsigned char *message) { int i, j; unsigned int byte, crc, mask; i = 0; crc = 0xFFFFFFFF; while (message[i] != 0) { byte = message[i]; // Get next byte. crc = crc ^ byte; for (j = 7; j >= 0; j--) { // Do eight times. mask = -(int)(crc & 1); crc = (crc >> 1) ^ (0xEDB88320 & mask); } i = i + 1; } return ~crc; } int main() { unsigned char message[] = "0123456789"; unsigned int crc; // gives 0xcbf43926 // this matches http://www.zorc.breitbandkatze.de/crc.html unsigned int original_crc = hackers_delight_crc32(message); printf( "original message: %s crc=0x%08X\n", message, original_crc ); // Finden wir eine zweite Nachricht mit demselben CRC ? // Nein, ist schwer zu ifnedn, aber nicht unmöglich for( unsigned char c = 'A'; c<='Z'; c++ ) { for( unsigned char d = 'A'; d<='Z'; d++ ) { for( unsigned char e = 'A'; e<='Z'; e++ ) { for( unsigned char f = 'A'; f<='Z'; f++ ) { for( unsigned char g = 'A'; g<='Z'; g++ ) { message[3] = c; message[5] = d; message[7] = e; message[8] = f; message[9] = g; crc = hackers_delight_crc32(message); ll++; if( crc == original_crc ) { printf( "message: %s crc=0x%08X\n", message, crc ); printf("DUPLICATE MESSAGE FOUND WITH SAME CRC\n"); } } } } } } printf( "attempts: %ld \n", ll ); } |
|
Отправлено: 17:04, 09-06-2012 |
![]() |
Участник сейчас на форуме |
![]() |
Участник вне форума |
![]() |
Автор темы |
![]() |
Сообщение прикреплено |
| |||||
Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
Антивирусы - Защищать клиент или сервер? | exo | Защита компьютерных систем | 4 | 07-11-2011 16:27 | |
Игровой сервер-клиент | Luka55555 | Хочу все знать | 4 | 02-10-2011 10:03 | |
Java - Коммуникация Клиент-Клиент, Клиент-Сервер | pivster | Программирование и базы данных | 6 | 17-06-2011 15:51 | |
сервер терминалов - клиент VPN | osaka | Microsoft Windows NT/2000/2003 | 1 | 26-04-2010 01:40 | |
Чем слепить GIF ? | Pa3pyxa | Вебмастеру | 3 | 05-09-2003 23:36 |
|