Форум программистов, компьютерный форум CyberForum.ru
Наши страницы

TCP/IP передача писем от сервера клиенту - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Создание чит-программы. http://www.cyberforum.ru/cpp-beginners/thread567537.html
Здравствуйте! Возможно ли создать чит-программу для Counter Strike 1.6,на языке программирования - C++? Если да,то как? Как интегрировать чит-программу с Контер Страйком 1.6,как сделать...
C++ Подключение CyaSSL (yaSSL), криптоалгоритм NTRU Всем доброго времени суток! Передо мной стоит задача - запрограммировать данный алгоритм шифрования, используя стандартные библиотеки криптопреобразований. Вот как раз в yaSSL (www.yassl.com)... http://www.cyberforum.ru/cpp-beginners/thread567536.html
Цикл: Написать программу вывода таблицы через 1 градус в 3 столбца C++
Написать программу вывода таблицы через 1 градус в 3 столбца (х изменяется от 0 до альфа). Альфа, А, В - переменные, которые нужно вводить Y =cos(x)-√(A/B) SetConsoleOutputCP(1251); float A,...
Файл: Поменять местами содержимое файлов C++
Даны два файла А и В (тип элементов одинаковый). Поменять местами содержимое этих файлов
C++ Найти элементы (и их сумму), которые состоят из двух равных частей и имеют в своем составе цифру 3 http://www.cyberforum.ru/cpp-beginners/thread567500.html
Помогите, натолкните на правильную мысль пожалуйста!! 1.Найти такие элементы (а также их сумму), которые состоят из двух равных частей и имеют в своем составе цифру 3. Пример: 4343 9131 33...
C++ Создание формы в Dll Привет всем! Хотел бы узнать, как создать форму в Dll? Хочу создать спамер для 1 игры.. Что бы его заинжектил и он спамил, даже со свёрнутым клиентом. Проблема в том что инжектить можно только... подробнее

Показать сообщение отдельно
Riderik
28 / 28 / 1
Регистрация: 24.07.2011
Сообщений: 171

TCP/IP передача писем от сервера клиенту - C++

07.05.2012, 01:11. Просмотров 1110. Ответов 4
Метки (Все метки)

Есть простейший почтовый сервер и почтовый клиент. Взаимодействие реализовано с помощью отправки констант, означающие например "отправить письмо", "зарегистрироваться", "получить письма". Все методы работают как надо, кроме одного, который работает по настроению. Я так и не понял, от чего он иногда отказывает. Метод передачи писем от сервера клиенту. Бывает ситуация: регистрируется пользователь, отправляет сам себе письмо, получает его как надо, и клиент ожидает от сервера еще чего-то, хотя сервер уже отослал ключ, означающий конец списка. После чего, если закрыть клиент, сервер уходит в бесконечный цикл, что-то пытаясь то ли разослать, то ли не знаю. При повторном запуске сервера и клиента этот же клиент получает письмо как надо и всё хорошо. А бывает, что письмо приходит с первого раза хорошо, но второе приходит с какими-то неадекватными символами. Вообще думаю, что не лучшая идея использовать по 3 send еще и в цикле у сервера при отправки письма. Может поэтому. Кто хорошо знаком с TCP/IP подскажите что тут может быть не так.
Сервер, отправка писем:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
void MailServer::GetMail() 
{ //расставил сиауты, пытаясь найти ошибку
    cout<<"\nОтправка входящих писем "<<logined.login;
    LoadMailList();
    for(list<Mail>::iterator it=mailList.begin(); it != mailList.end(); it++)
    {cout<<"\nОтправка "<<(int)OK<<"("<<sizeof(OK)<<")";
        send(s_cl, &OK, sizeof(OK), 0); //ОК значит, что сейчас будет отправка письма
        cout<<"\nОтправка "<<it->fromUser<<"("<<strlen(it->fromUser)+1<<")"; 
        send(s_cl, it->fromUser, strlen(it->fromUser)+1, 0); 
        cout<<"\nОтправка "<<it->text<<"("<<strlen(it->text)+1<<")";
        send(s_cl, it->text, strlen(it->text)+1, 0);
    }cout<<"\nОтправка "<<int(ERR)<<"("<<sizeof(ERR)<<")";
    send(s_cl, &ERR, sizeof(ERR), 0); //ERR значит, что писем больше нет
    cout<<"\nВходящие письма "<<logined.login<<" отправлены";
}
Клиент, получение писем:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
void MailClient::GetMail()
{
    send(sock, &GET_MAIL, sizeof(GET_MAIL), 0); // GET_MAIL вызывает метод GetMail на сервере
    char key[1]; //для получения ОК или ERR
    Mail mail;
    cout<<"\nВходящие сообщения: \n";
    while( recv(sock, key, sizeof(key),0))
    {
        cout<<"\nПолучен ключ "<<(int)key[0];
        if(key[0] != OK ) return;
        cout<<"\nОжидание from";
        if( !recv(sock, mail.fromUser, sizeof(mail.fromUser),0)) throw "Сервер не отвечает"; 
        cout<<"\nПолучен "<<mail.fromUser<<"\nОжидание text";
        if( !recv(sock, mail.text, sizeof(mail.text),0)) throw "Сервер не отвечает";
        cout<<"\nПолучен "<<mail.text;
        cout<<"\nОт: "<<mail.fromUser
            <<"\nСообщение: "<<mail.text;
    }
}
Кличи и структура письма:
C++
1
2
3
4
5
6
const char LOGIN=1, REGISTER=2, GET_MAIL=3, SEND_MAIL=4, ERR=5, OK=6;
struct Mail
{
    char fromUser[16];
    char text[32000];
};
0
Миниатюры
TCP/IP передача писем от сервера клиенту   TCP/IP передача писем от сервера клиенту   TCP/IP передача писем от сервера клиенту  

Вложения
Тип файла: rar KS_Lab_5_Server.rar (3.3 Кб, 29 просмотров)
Тип файла: rar KS_Lab_5_Client.rar (2.1 Кб, 32 просмотров)
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru