|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
|
Опции темы | Поиск в этой теме |
11.04.2008, 12:56 | #1 |
Регистрация: 11.04.2008
Сообщений: 8
|
Работа с Socket-ом c помощю WinAPI
Приветствую всех!
Я пишу программу, которая забирает письма с POP3 сервера и записывает их в файлы (каждое письмо в отдельный). Для получения письма использую следующий код: command:='retr 1'#10; send(ServSock,command[1],length(command),0); memo1.Lines.Add(command); assignfile(f,'letter 1.txt'); rewrite(f); agr:=1 ; ioctlsocket(servsock,FIONBIO,agr); tv.tv_sec := 1; tv.tv_usec := 0; FD_SET(ServSock,wfds); repeat begin recv(ServSock,buf,length(buf),0) ; x:=select(0,@wfds,nil,nil,@tv); memo1.Lines.Add(buf); write(f,buf) ; buf:=''; end; until x<=0; А проблема следующая: При получении письма(цикл) происходит дубликование отднльных кусков письма (причем всегда по-разному). Помогите кто чем может!
Компьютер позволяет решать все проблемы, которые до изобретения компьютера не существовали...
|
11.04.2008, 13:13 | #2 | |||
Новичок
Джуниор
Регистрация: 18.01.2008
Сообщений: 1,720
|
Цитата:
Цитата:
Цитата:
|
|||
11.04.2008, 13:25 | #3 | |
Регистрация: 11.04.2008
Сообщений: 8
|
Работа с Socket-ом c помощю WinAPI
Цитата:
Пытаюсь сделать по описанию...
Компьютер позволяет решать все проблемы, которые до изобретения компьютера не существовали...
Последний раз редактировалось Stilet; 11.04.2008 в 13:35. |
|
11.04.2008, 13:43 | #4 |
Новичок
Джуниор
Регистрация: 18.01.2008
Сообщений: 1,720
|
Если buf, как я предполагаю, строка, то строки в паскале устроены следующим образом: в нулевом элементе - длина строки, а в 1, 2 и т.д. - символы из которых она состоит. Вы передаёте в recv адрес строки, начиная с нулевого элемента и recv спокойненько пишет вместо длины строки всё, что ему свалилось, при этом (с точки зрения паскаля) строка может "вдруг" стать короче или длиннее, чем должна была бы быть. Я думаю, что если вызвать recv примерно вот так:
Код:
|
11.04.2008, 13:53 | #5 |
Регистрация: 11.04.2008
Сообщений: 8
|
Да buf у меня является строкой, но длиннее чем 255,т.к. я его объявил
как: buf:array[0..65000] of Char; buf[0] := chr(recv(ServSock, @buf[1], 255, 0)); Не помогло...
Компьютер позволяет решать все проблемы, которые до изобретения компьютера не существовали...
|
11.04.2008, 14:10 | #6 |
Новичок
Джуниор
Регистрация: 18.01.2008
Сообщений: 1,720
|
|
11.04.2008, 14:30 | #7 |
Регистрация: 11.04.2008
Сообщений: 8
|
Объявляю как:
Код:
Код:
В Memo получается такой текст: retr 2 +OK 2472 octets Received: from office3d89b715 ([127.0.0.1]) by mail.ya2.com (Merak 7.6.0) with SMTP id DEMO for <administrator@ya2.com>; Wed, 09 Apr 2008 10:21:05 +0400 Message-ID: <001901c89a09$e44bdfa0$7dc8a8c0@off ice3d89b715> From: яReceived: from office3d89b715 ([127.0.0.1]) by mail.ya2.com (Merak 7.6.0) with SMTP id DEMO for <administrator@ya2.com>; Wed, 09 Apr 2008 10:21:05 +0400 Message-ID: <001901c89a09$e44bdfa0$7dc8a8c0@off ice3d89b715> From: =?koi8-r?B?98HMx яc7Uyc4g6MHIwc7P1w==?= <administrator@ya2.com> To: <administrator@ya2.com> Subject: Fw: test Date: Wed, 9 Apr 2008 10:21:05 +0400 MIME-Version: 1.0 Content-Type: multipart/alternative; boundary="----=_NextPart_000_0016_01C89A2B.6B5D7F A0" X-Priority Ћ: 3 X-MSMail-Priority: Normal X-Mailer: Microsoft Outlook Express 6.00.2900.3138 X-MimeOLE: Produced By Microsoft MimeOLE V6.00.2900.3198 я This is a multi-part message in MIME format. ------=_NextPart_000_0016_01C89A2B.6B5D7F A0 Content-Type: text/plain; charset="koi8-r" Content-Transfer-Encoding: quoted-printable ----- Original Message -----=20 From: =F7=C1=CC=C5=CE=D4=C9=CE = яE8=C1=C8=C1=CE=CF=D7=20 To: =F7=C1=CC=C5=CE=D4=C9=CE =E8=C1=C8=C1=CE=CF=D7=20 Sent: Wednesday, April 02, 2008 11:32 AM Subject: test test __________ NOD32 3011 (20080408) Information __________ This message was checked by NOD32 antivirus s ystem. http://www.eset.com ‹ __________ NOD32 3018 (20080411) Information __________ This message was checked by NOD32 antivirus system. http://www.eset.com я------=_NextPart_000_0016_01C89A2B.6B5D7F A0 Content-Type: text/html; charset="koi8-r" Content-Transfer-Encoding: quoted-printable <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"> <HTML><HEAD> <META http-equiv=3DContent-Type content= я3D"text/html; charset=3Dkoi8-r"> <META content=3D"MSHTML 6.00.2900.2802" name=3DGENERATOR> <STYLE></STYLE> </HEAD> <BODY bgColor=3D#ffffff> <DIV> </DIV> <DIV style=3D"FONT: 10pt arial">----- Original Message -----=20 <DIV style=3D"BACKGROUND: я#e4e4e4; font-color: black"><B>From:</B> <A=20 title=3Dadministrator@ya2.com = href=3D"mailto:administrator@ya2.co m">=F7=C1=CC=C5=CE=D4=C9=CE=20 =E8=C1=C8=C1=CE=CF=D7</A> </DIV> <DIV><B>To:</B> <A title=3Dadministrator@ya2.com=20 href=3D"mailto:admin яistrator@ya2.com">=F7=C1=CC=C5=CE= D4=C9=CE = =E8=C1=C8=C1=CE=CF=D7</A> </DIV> <DIV><B>Sent:</B> Wednesday, April 02, 2008 11:32 AM</DIV> <DIV><B>Subject:</B> test</DIV></DIV> <DIV><BR></DIV> <DIV><FONT face=3DArial size=3D2>test</FONT></DIV><BR><BR>_ В_________ = NOD32 3011=20 (20080408) Information __________<BR><BR>This message was checked by = NOD32=20 antivirus system.<BR><A=20 href=3D"http://www.eset.com">http://www.eset.com</A><BR> З<BR> <BR> __________ NOD32 3018 (20080411) Information __________<BR> <BR> This message was checked by NOD32 antivirus system.<BR> <A HREF=3D"http://www.eset.com">http://www.eset.com</A><BR> A</BODY></HTML> ------=_NextPart_000_0016_01C89A2B.6B5D7F A0-- . Многовато для лёгкого письма.
Компьютер позволяет решать все проблемы, которые до изобретения компьютера не существовали...
|
11.04.2008, 14:46 | #8 |
Новичок
Джуниор
Регистрация: 18.01.2008
Сообщений: 1,720
|
|
11.04.2008, 14:48 | #9 | |
Регистрация: 11.04.2008
Сообщений: 8
|
Цитата:
Received: from office3d89b715 ([127.0.0.1]) by mail.ya2.com (Merak 7.6.0) with SMTP id DEMO for <administrator@ya2.com>; Wed, 09 Apr 2008 10:21:05 +0400 Message-ID: <001901c89a09$e44bdfa0$7dc8a8c0@off ice3d89b715> From: яReceived: from office3d89b715 ([127.0.0.1]) by mail.ya2.com (Merak 7.6.0) with SMTP id DEMO for <administrator@ya2.com>; Wed, 09 Apr 2008 10:21:05 +0400 Message-ID: <001901c89a09$e44bdfa0$7dc8a8c0@off ice3d89b715> From: =?koi8-r?B?98HMx
Компьютер позволяет решать все проблемы, которые до изобретения компьютера не существовали...
|
|
11.04.2008, 15:06 | #10 |
Новичок
Джуниор
Регистрация: 18.01.2008
Сообщений: 1,720
|
Слушайте, ну у Вас же там антивирус стоит. Чёрт его знает, какой он путь достраивает в заголовке при проверке почты. Вы обычным почтовым клиентом проверяли? Там нет таких "удвоений"?
|
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
UDP & Socket | Shouldercannon | Работа с сетью в Delphi | 14 | 13.10.2008 17:23 |
Socket Get | Editor | Работа с сетью в Delphi | 7 | 22.04.2008 05:48 |
Организация поиска с помощю Полей со списком | Ice_Juice | Microsoft Office Access | 1 | 16.03.2008 01:26 |
Работа Client i Server socket на уровнях модели OSI | ilyano | Работа с сетью в Delphi | 3 | 31.10.2007 08:40 |
Socket Delphi 7 | merax | Работа с сетью в Delphi | 1 | 09.02.2007 10:32 |