![]() |
|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
![]() |
|
Опции темы | Поиск в этой теме | Опции просмотра |
#1
|
|||
|
|||
![]() Пишу софтину для почтовой рассылки. Софтина посредством WinSock должна подконнектиться к серверу, авторизоваться и рассылать письма.
Происходит все так: Код:
Внимание вопрос! Куда делись оставшиеся 4 строки ответа и как их получить в буфер msg? Ковыряю гугл второй день, все глухо, во всех примерах по Winsock ничего подобного не объясняется, да и вообще, поверхностные они какие-то... И да, не посылайте меня, пожалуйста, в сторону инди и TCPClient. Я хочу сделать все именно на Winsock и никак иначе. Версия библиотеки - 2.0. Буду очень благодарен, если посоветуете ХОРОШЕЕ руководство по Winsock, желательно для Delphi, желательно на русском языке. Заранее спасибо! ![]() UPD: Я дико извиняюсь - изначально неверно сформулировал проблему! Правильная формулировака ниже! Последний раз редактировалось Olgir, 29.08.2011 в 16:48. |
#2
|
|||
|
|||
![]() а как ты видишь, что тебе вернули только одну строку???
есть подозрение, что ты просто неправильно обрабатываешь ответ. |
#3
|
||||||||
|
||||||||
![]() Цитата:
"250 Тут некоторый ответ #13#10 00000000000000000000000000000... Все как положено - код, потом текст, потом перенос строки. Но дальше нулями забито все до конца массива, т.е., из пяти строк в мой массив пришла лишь одна. Массив, напоминаю, msg: array[0..1023] of AnsiChar; Цитата:
Еще читал, что к данным пришедшим на сокет можно обращаться с помощью ReadFile. Программа компилируется, никаких исключений функция не генерит, она просто ничего не читает. Вобщем, хотелось бы совет, желательно с примером, а еще лучше, какое-нибудь хорошее чтиво по сокетам... UPD: я дико извиняюсь, изначально неверно сформулировал проблему! Только что нашел небольшой косяк, немного переписал код. Сейчас переформулирую... Соединяюсь с сервером, получаю приветствие от него. Код:
msg: 220 SMTP technoac.ru ESMTP #10#13 ret: 28 Отправляю приветствие серверу. Код:
msg: EHLO ret: 4 Пытаюсь получить ответ. Код:
На этом месте функция recv() виснет и не отдает управление. Что-то я явно делаю не так, но что? В этом месте как раз и предполагаются искомые 5 строк текста, вместо этого я вообще ничего не получаю. Последний раз редактировалось Olgir, 29.08.2011 в 16:49. |
#4
|
||||
|
||||
![]() Код:
Пишу программы за еду. __________________ |
#5
|
|||
|
|||
![]() NumLock, спасибо, завтра приду на работу, разберу это).
UPD: кажется понял свою ошибку. Нужно ставить CRLF в конце сообщения, а я этого не сделал. Последний раз редактировалось Olgir, 30.08.2011 в 00:02. |
#6
|
|||
|
|||
![]() Все работает, проблема решена. Действительно, все дело в том, что я не передавал #10#13 в конце строки.
NumLock, спасибо за дельный пример! ![]() |