Форум программистов, компьютерный форум, киберфорум
C# .NET
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.75/4: Рейтинг темы: голосов - 4, средняя оценка - 4.75
41 / 40 / 23
Регистрация: 10.03.2012
Сообщений: 374

Реализация протокола pop. При попытке реализовать такие команды, как STAT и LIST программа зависает

17.04.2014, 22:18. Показов 837. Ответов 1
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте! Пытаюсь создать простого почтового клиента, используя методы класса TcpClient. Получилось реализовать чтение одного письма согласно следующему коду:

C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
// create an instance of TcpClient
                TcpClient tcpclient = new TcpClient();
                // HOST NAME POP SERVER and gmail uses port number 995 for POP 
                tcpclient.Connect("pop.gmail.com", 995);
                // This is Secure Stream // opened the connection between client and POP Server
                System.Net.Security.SslStream sslstream = new SslStream(tcpclient.GetStream());
                // authenticate as client  
                sslstream.AuthenticateAsClient("pop.gmail.com");
                //bool flag = sslstream.IsAuthenticated;   // check flag
                // Asssigned the writer to stream 
                System.IO.StreamWriter sw = new StreamWriter(sslstream);
                // Assigned reader to stream
                System.IO.StreamReader reader = new StreamReader(sslstream);
                // refer POP rfc command, there very few around 6-9 command
                sw.WriteLine("USER [email]my_login@gmail.com[/email]");
                // sent to server
                sw.Flush();
                sw.WriteLine("PASS my_pass");
                sw.Flush();
                // this will retrive your first email
                sw.WriteLine("RETR 1");
                sw.Flush();
                
                string str = string.Empty;
                string strTemp = string.Empty;
                while ((strTemp = reader.ReadLine()) != null)
                {
                    // find the . character in line
                    if (strTemp == ".")
                    {
                        break;
                    }
                    if (strTemp.IndexOf("-ERR") != -1)
                    {
                        break;
                    }
                    str += strTemp;
                }
                
                // close the connection
                sw.WriteLine("QUIT");
                sw.Flush();
 
                richTextBox2.Text = str;
Но при попытке реализовать такие команды, как STAT и LIST программа зависает. Подозреваю, что проблема в цикле чтения. Для STAT использовал в качестве признака конца строки символы \r\n (т. е. strTemp = "\r\n"), а для LIST - ".\r\n". Подскажите, как исправить? Заранее спасибо!
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
17.04.2014, 22:18
Ответы с готовыми решениями:

Зависает программа при попытке сохранить результат
Всем привет. В своём проекте использую Microsoft.Office.Interop.Excel. Процесс открытия документа...

Программа намертво зависает при попытке ввода данных
Ребята, прошу помощи. Проблема в том, что программа намертво зависает при попытке ввода данных....

[Ubuntu] При попытке сделать SaveToFile зависает программа
При попытке выполнить следующий код выполнение программы тупо зависает: ...

1
41 / 40 / 23
Регистрация: 10.03.2012
Сообщений: 374
20.04.2014, 00:28  [ТС]
Программа странным образом заработала, после того как я поместил закрытие соединения

C#
1
2
3
// close the connection
                sw.WriteLine("QUIT");
                sw.Flush();
до цикла чтения потока. Кто-то может объяснить с чем это связано?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
20.04.2014, 00:28
Помогаю со студенческими работами здесь

Зависает программа при попытке чтения строки из listbox`a
LPCTSTR dir = L""; int SelectedIndex = SendMessage(hDirsList, LB_GETCURSEL, 0, 0);...

При попытке вывести форму по таймеру программа зависает
Реальное приложение должно мониторить систему по таймеру и при выполнении некоторого условия...

DirectX.AudioVideoPlayback: при попытке запустить видео программа зависает
Подключил using Microsoft.DirectX; using Microsoft.DirectX.AudioVideoPlayback; При попытке...

Xerox WorkCentre 3550. При попытке напечатать текст (без разницы какая программа) программа из которой идет печать зависает. Картинки печатаются норм.
Вот такая вот байда. Кто сталкивался? Подскажите где тут собака зарыта :) з.ы. никогда не...

pop.gmail.com -- STAT
Вот есть проблема при получении писем. С майл ру могу считывать сколько хошь раз одни и теже...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
Новые блоги и статьи
делаю науч статью по влиянию грибов на сукцессию
anaschu 13.03.2026
прикрепляю статью
SDL3 для Desktop (MinGW): Создаём пустое окно с нуля для 2D-графики на SDL3, Си и C++
8Observer8 10.03.2026
Содержание блога Финальные проекты на Си и на C++: hello-sdl3-c. zip hello-sdl3-cpp. zip Результат:
Установка CMake и MinGW 13.1 для сборки С и C++ приложений из консоли и из Qt Creator в EXE
8Observer8 10.03.2026
Содержание блога MinGW - это коллекция инструментов для сборки приложений в EXE. CMake - это система сборки приложений. Здесь описаны базовые шаги для старта программирования с помощью CMake и. . .
Как дизайн сайта влияет на конверсию: 7 решений, которые реально повышают заявки
Neotwalker 08.03.2026
Многие до сих пор воспринимают дизайн сайта как “красивую оболочку”. На практике всё иначе: дизайн напрямую влияет на то, оставит человек заявку или уйдёт через несколько секунд. Даже если у вас. . .
Модульная разработка через nuget packages
DevAlt 07.03.2026
Сложившийся в . Net-среде способ разработки чаще всего предполагает монорепозиторий в котором находятся все исходники. При создании нового решения, мы просто добавляем нужные проекты и имеем. . .
Модульный подход на примере F#
DevAlt 06.03.2026
В блоге дяди Боба наткнулся на такое определение: В этой книге («Подход, основанный на вариантах использования») Ивар утверждает, что архитектура программного обеспечения — это структуры,. . .
Управление камерой с помощью скрипта OrbitControls.js на Three.js: Вращение, зум и панорамирование
8Observer8 05.03.2026
Содержание блога Финальная демка в браузере работает на Desktop и мобильных браузерах. Итоговый код: orbit-controls-threejs-js. zip. Сканируйте QR-код на мобильном. Вращайте камеру одним пальцем,. . .
SDL3 для Web (WebAssembly): Синхронизация спрайтов SDL3 и тел Box2D
8Observer8 04.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-sync-physics-sprites-sdl3-c. zip На первой гифке отладочные линии отключены, а на второй включены:. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru