>>>>>>собсно проблема в следующем... пишу на С SMTP клиента для отправки сообщений,
>>>>>>он на ура коннектится с SMTP сервером но вот передавать ему
>>>>>>ничего не желает!
>>>>>>пороблема вот в ентом куске!
>>>>>>/* connect to server */
>>>>>> if (connect (socket_fd, &name, sizeof (struct sockaddr_in)) == -1)
>>>>>> {
>>>>>> perror ("connect");
>>>>>> return 1;
>>>>>> }
>>>>>>
>>>>>> sprintf (buff, "VRFY ");
>>>>>> write (socket_fd, buff, strlen(buff));
>>>>>> while (1){
>>>>>> if (read (socket_fd, buff, 10000) == 0) return 0;
>>>>>
>>>>>я когда-то писала smtp - клиента и была похожая проблема
>>>>>вот как раз в верхней строке:
>>>>>он ждет, пока не примет 10000 байт...
>>>>>решилось это следующим:
>>>>>
>>>>>#include <fcntl.h>
>>>>>
>>>>><some code>
>>>>>и перед чтением из сокета:
>>>>>
>>>>>fcntl( sock, F_SETFL, O_NONBLOCK );
>>>>>
>>>>>после этого у меня все заколосилось, может, и у тебя в том
>>>>>же дело? :)
>>>>>
>>>>>> fwrite (buff, sizeof (char), characters_read, stdout);
>>>>>> }
>>>>>>
>>>>>>все что он мне выдает это - 220 Hello! и т.д.\
>>>>>>
>>>>>>в чем гвозди?
>>>>
>>>>так вот дело то как раз в том что SMTP сервер не
>>>>воспринимает команды! (( т.е ему хоть MAIL To:... хоть HELO -
>>>>все побоку!
>>>
>>>рассинхронизировано возможно...
>>>может, команду шлешь раньше, чем ответ примешь?
>>
>>
>>и руками пробовал!
>>а с синхронизацией!
>>пробовал даже так!
>>read (socket_fd, buff, 10000)ж
>>fwrite (....);
>>
>>и тока потом
>>sprintf (...)
>>write (...)
>
>
>а на fcntl вылетает куча 220 приветствий!
хм...
linas@vzljot.ru
шли код - посмотрим, так неясно...
|