Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2002.12.23;
Скачать: CL | DM;

Вниз

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

 
Дмитрий К.К. ©   (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;
Скачать: CL | DM;

Наверх




Память: 0.51 MB
Время: 0.015 c
4-75063
Atamali Mamedov
2002-11-09 12:06
2002.12.23
ojidat konech programmi


3-74598
atmamont
2002-12-03 02:00
2002.12.23
отбор значений


14-74923
JOHNY C
2002-12-02 08:20
2002.12.23
набор команды (продолжение)


3-74577
Pavel_S
2002-12-04 16:27
2002.12.23
ПОМОГИТЕ С ЗАПРОСОМ !!!


14-74896
AlexZ
2002-11-28 08:22
2002.12.23
Утечка памяти, или..?