Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Потрепаться";
Текущий архив: 2002.12.23;
Скачать: [xml.tar.bz2];

Вниз

Чтение новостных групп   Найти похожие ветки 

 
Дмитрий К.К.   (2002-11-29 09:31) [0]

Посоветуйте, плиз, прогу по сабжу - удобную и многофункциональную.


 
AL2002   (2002-11-29 10:12) [1]

Пара прог у меня есть. Ничего о них не знаю, т.к. не юзал, но могу зафутболить.


 
Дмитрий К.К.   (2002-11-29 11:49) [2]

Пасиб, Ал. Тока что нашел Agent"а. Наверное, буду юзать ее.


 
AL2002   (2002-11-29 12:54) [3]


> Дмитрий К.К. © (29.11.02 11:49)

Ссылку, плиз.


 
Дмитрий К.К.   (2002-11-29 12:58) [4]

Держи http://www.forteinc.com/agent/


 
Вадим   (2002-11-29 15:07) [5]

А как у этой проги KOI8-R настроить?


 
Дмитрий К.К.   (2002-11-29 20:18) [6]

Не знаю, я читаю в основном западные новостные группы.


 
Oleg_Gashev   (2002-11-29 21:01) [7]

Странно. Все мы тут программисты и сделать более-менее рабочую программу могут многие. Я за два часа набрал следующее:


#include <iostream.h>
#include <winsock.h>
#include <string.h>
#include <stdio.h>


#define MAXBLOCKSIZE 80

void main(void)
{
WSADATA wsaData;
int wsaErrorCode = WSAStartup( MAKEWORD( 1, 0 ), &wsaData );

cout<<wsaErrorCode<<endl;
SOCKET sockfd = socket(AF_INET, SOCK_STREAM, 0); // do some error checking!


HOSTENT *h;
h=gethostbyname("news.microsoft.com");

sockaddr_in dest_addr;

dest_addr.sin_family = AF_INET; // host byte order
dest_addr.sin_port = htons(119); // short, network byte order
dest_addr.sin_addr.s_addr = inet_addr(inet_ntoa(*((struct in_addr *)h->h_addr)));
memset(&(dest_addr.sin_zero), "\0", 8); // zero the rest of the struct

int Timeout=1000;
setsockopt(sockfd,SOL_SOCKET,SO_RCVTIMEO,(const char*)&Timeout,sizeof(Timeout));
setsockopt(sockfd,SOL_SOCKET,SO_SNDTIMEO,(const char*)&Timeout,sizeof(Timeout));

ULONG ulB = FALSE; // Set socket to non-blocking mode
struct timeval Time;
fd_set FdSet;

ioctlsocket(sockfd, FIONBIO, &ulB);

// don"t forget to error check the connect()!
int c=connect(sockfd, (struct sockaddr *)&dest_addr, sizeof(struct sockaddr));

if (c==SOCKET_ERROR)
{
if (WSAGetLastError() == WSAEWOULDBLOCK)
{
// now wait for the specified time
FD_ZERO(&FdSet);
FD_SET(sockfd, &FdSet);

Time.tv_sec = Timeout / 1000L;
Time.tv_usec = (Timeout % 1000) * 1000;
int rc = select(0, NULL, &FdSet, NULL, &Time);

}
}

ulB = FALSE; // Restore socket to blocking mode
ioctlsocket(sockfd, FIONBIO, &ulB);

cout<<c<<endl;
char a[100];
strcpy(a,"group microsoft.public.vc.language\r\n");
send(sockfd,a,strlen(a),0);
int i=30000;
while(i<32000)
{
//cout<<"Enter string:"<<endl;
//gets(a);
i++;
strcpy(a,"next\r\nbody\r\n");
send(sockfd,a,strlen(a),0);
//strncat(a,"\r\n",100);
//strcpy(a,"article\r\n");
//send(sockfd,a,strlen(a),0);
char tmpBuffer[MAXBLOCKSIZE]={0};
int curSize = 1;
int totalReceived = 0;
char FileName[100];
char ic[6];
strcpy(FileName,"D:\\News\\microsoft\\");
itoa(i,ic,10);
strncat(FileName,ic,100);
strncat(FileName,".txt",100);
FILE *f;
f=fopen(FileName,"wt");
// receive loop
while( (curSize != SOCKET_ERROR) && (curSize != 0) )
{
try{
memset(tmpBuffer,"\0",MAXBLOCKSIZE);

curSize = recv(sockfd, (char *)tmpBuffer, (MAXBLOCKSIZE - 1), 0);
fprintf(f,(char *)tmpBuffer);
cout<<tmpBuffer;
}
catch(...) {
break;
}


}
fclose(f);
}
WSACleanup();

}


Код нуждается в доработке ( ставлю себе 2 за реализацию). Но вполне работоспособен.


 
Дмитрий К.К.   (2002-11-29 21:26) [8]


> Oleg_Gashev © (29.11.02 21:01)


Посмотри программу по ссылке (Agent). Ее писАли явно не за два часа.


 
Oleg_Gashev   (2002-11-29 21:33) [9]

> Ее писАли явно не за два часа.

Естаственно, просто вопроса у меня такого не возникало. Просто когда нужна особая функциональность, реализовываю сам. Извините, но я использую Outlook Express. Большая функциональность? Да, нужна. Но в других продуктах я ее не нашел.


 
Дмитрий К.К.   (2002-11-29 21:37) [10]

Скорее всего, плохо смотрел.


 
Oleg_Gashev   (2002-11-29 21:39) [11]

Вам перечислить?
Пожалуйста.

Основные возможности

Возможность задания различных установок для разных newsgroups и news серверов;
Возможность использования псевдонимов для серверов и newsgroups;
Возможность представления иерархии групп в виде дерева;
Селективная загрузка списка групп, то есть работа только со списком подписанных групп и отдельно список групп на сервер, на данный момент вся информация о группах, серверах;
Работа с proxy. (Пока не знаю как, может кто-то подскажет?);
Мониторинг групп. То есть периодическая проверка на новые сообщения в группе и на сервере через заданный промежуток времени;
Фильтрация сообщений. Черный и белый списки;
Использование templates для чтения сообщений;
Import/export;
возможность получения списка newsgroups как tree. То есть, например, все группы fido7.* лежат в одной ветке.


 
Oleg_Gashev   (2002-11-29 21:41) [12]

Это не весь список. Могу продолжить. Около 50 пунктов.


 
Oleg_Gashev   (2002-11-29 21:42) [13]

Ваша программа не реализовывает даже пловины из перечисленного.


 
Дмитрий К.К.   (2002-11-29 21:44) [14]

Лан, убедили :)
Но программа Agent тоже обладает немалым количеством функций... а идеала, думается, не достичь никому.


 
Oleg_Gashev   (2002-11-29 21:49) [15]

> Дмитрий К.К.
> а идеала, думается, не достичь никому.

Реализовывается все это без проблем. Алгоритмика и функциональность не очень сложная. Работы с ней много. Одному- сделать тяжело. Если есть желание все это реализовать- пишите на email.


 
Дмитрий К.К.   (2002-11-29 21:51) [16]

А Вы Паскаль, наверное, не признаете...


 
Oleg_Gashev   (2002-11-29 21:53) [17]

C++, STL. И есть на это немало причин.


 
Oleg_Gashev   (2002-11-30 21:55) [18]

> Дмитрий К.К.

Сделал online client для чтения newsgroups.
Посмотреть можно на http://gashev.com/news/news.html


 
Дмитрий К.К.   (2002-11-30 22:40) [19]

Спасибо, обязательно посмотрю и заценю!



Страницы: 1 вся ветка

Форум: "Потрепаться";
Текущий архив: 2002.12.23;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.49 MB
Время: 0.009 c
3-74584
ev1972
2002-12-04 16:03
2002.12.23
Как модифицировать структуру таблицы в Delphi?


1-74727
бобёр
2002-12-13 13:25
2002.12.23
Form


7-75019
vic_774N
2002-10-19 15:38
2002.12.23
Как программно отключить переход на летнее время ?


1-74715
Alfred
2002-12-12 11:36
2002.12.23
Как выйти из цикла по нажатию клавиши


1-74683
olookin
2002-12-13 13:02
2002.12.23
Макросы





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский