Форум программистов, компьютерный форум, киберфорум
C# .NET
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.54/13: Рейтинг темы: голосов - 13, средняя оценка - 4.54
144 / 144 / 32
Регистрация: 26.10.2008
Сообщений: 782
1

разработать приложение-сервер, которое публикует ленты новостей RSS

09.12.2009, 23:23. Показов 2455. Ответов 16
Метки нет (Все метки)

Мне требуется разработать приложение-сервер, которое публикует ленты новостей RSS. Обращение к компьютеру происходит по локальной сети через его адресс. Приложение должно поддерживать длительную работу, сохранение на диске и управление новостями.

Знаю, что для соединения нужно использовать socket.
У меня основные вопросы возникают с использованием socket'ов.
Как обеспечить доступ другого компьютера к новостям - с помощью соединения с ним или каким-либо образом публикуя где-нибудь эти новости.

Объясните, пожалуйста, что такое socket'ы, и как их использовать.
0

Помощь в написании контрольных, курсовых и дипломных работ здесь.

Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
09.12.2009, 23:23
Ответы с готовыми решениями:

Прием RSS-ленты новостей
Всем доброго время суток, нужно написать программу, которая может анализировать RSS-содержимое в...

Количество новостей rss ленты и подключения несколько rss лент
Здравствуйте, возник такой вопрос, у меня есть rss-лента, одна она работает <?php $rss =...

RSS ленты новостей
Никогда не пользовался RSS лентами новостей и даже толком не знаю, что это такое. По моему...

Можно ли сделать приложение, которое будет брать RSS-ленту с моего сайта?
Можно ли сделать приложение, Которое будет брать Rss ленту с моего сайта, И возможно ли, Что оно...

16
10 / 10 / 4
Регистрация: 07.12.2009
Сообщений: 31
09.12.2009, 23:47 2
По сокетам я писал тут (там два примера - сервер и клиент, а так же как осуществлять "общение" между ними).
Насчет rss - работать не приходилось.
1
CEO
Эксперт С++
2256 / 1246 / 57
Регистрация: 16.03.2009
Сообщений: 3,588
10.12.2009, 01:00 3
в C# есть пространства System.Net и System.Net.Sockets через которые в основном и осуществляется реализация сокетов.
1
144 / 144 / 32
Регистрация: 26.10.2008
Сообщений: 782
10.12.2009, 01:08  [ТС] 4
Цитата Сообщение от Alligieri Посмотреть сообщение
в C# есть пространства System.Net и System.Net.Sockets через которые в основном и осуществляется реализация сокетов.
Я это знаю. Я в MSDN уже примеры смотрел.
Только не знаю каким образом выкладывать новости и узнавать, что кто-нибудь пытается подключиться к серверу.
0
4314 / 1482 / 101
Регистрация: 12.04.2009
Сообщений: 2,342
10.12.2009, 01:15 5
https://www.cyberforum.ru/gtse... %252F#1429
на этом форуме много примеров
1
CEO
Эксперт С++
2256 / 1246 / 57
Регистрация: 16.03.2009
Сообщений: 3,588
10.12.2009, 13:33 6
Цитата Сообщение от qwert Посмотреть сообщение
Я это знаю. Я в MSDN уже примеры смотрел.
Только не знаю каким образом выкладывать новости и узнавать, что кто-нибудь пытается подключиться к серверу.
Ну я пока с того что писал юзаю TcpListener и TcpClient. в серверном приложении создаю цикл прослушки канала
C#
1
2
 while (true) { TcpClient client = listener.AcceptTcpClient();
                NetworkStream clientStream = client.GetStream(); ... }
и ловлю все входящие соединения. Правда думаю есть и способа поумнее - я на C# не так давно програмирую, тем более сокет.
0
144 / 144 / 32
Регистрация: 26.10.2008
Сообщений: 782
10.12.2009, 21:52  [ТС] 7
А как вообще происходит подлючение клиента?
Ну работает моя программа, ждёт как-нибудь соединение, например как в примере
Alligieri. И как клиент подлючается к моей программе?
Насколько я понимаю, если программа видит, что к ней кто-то подлючён, то она должна выдать ему файл, в моём случае файл с новостями.
Помогите, пожалуйста.
0
CEO
Эксперт С++
2256 / 1246 / 57
Регистрация: 16.03.2009
Сообщений: 3,588
11.12.2009, 03:18 8
Например я делаю ЭТО так:

C#
1
2
3
4
5
6
7
TcpClient client = ConnectToServer();
                // Отправка запроса серверу. 
                NetworkStream clientStream = client.GetStream();
                string request = ("LOGIN");
                
                byte[] requestBuffer = Encoding.ASCII.GetBytes(request);
                clientStream.Write(requestBuffer, 0, requestBuffer.Length);
Метод ConnectToServer:

C#
1
2
3
4
5
6
7
8
9
10
11
12
13
private static TcpClient ConnectToServer()
        {
            // Подключение к серверу. 
            TcpClient client = new TcpClient();
            IPHostEntry host = Dns.GetHostEntry(Properties.Settings.Default.Server);
            var address = (from h in host.AddressList
                           where h.AddressFamily == AddressFamily.InterNetwork
                           select h).First();
            client.Connect(address.ToString(),
            Properties.Settings.Default.Port);
            return client;
                        
        }
Также в проэкте создаю файл настроек который содержит порт и им"я сервера.

Добавлено через 3 минуты
А на стороне сервера:

C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
TcpListener listener = new TcpListener(IPAddress.Any, Properties.Settings.Default.port);
            listener.Start();
            string sName = Dns.GetHostName();
            Console.WriteLine("Server {0} running...", sName);
            
            while (true)
            {
                const int bufferSize = 8192;
                TcpClient client = listener.AcceptTcpClient();
                NetworkStream clientStream = client.GetStream();
                byte[] buffer = new byte[bufferSize];
                int readBytes = 0;
 
 
                readBytes = clientStream.Read(buffer, 0, bufferSize);
                string request = Encoding.ASCII.GetString(buffer).Substring(
                0, readBytes);
 
                if (request.StartsWith("LOGIN", StringComparison.Ordinal))
                { ........... и поехали
1
144 / 144 / 32
Регистрация: 26.10.2008
Сообщений: 782
11.12.2009, 17:49  [ТС] 9
Я нашёл пример в книге. Только там работа происходит с изображениями.
C#
1
2
3
4
5
 byte[] data = File.ReadAllBytes(Path.Combine(
                     Properties.Settings.Default.PictureDirectory, filename));
 
               // Send the picture to the client.
               clientStream.Write(data, 0, data.Length);
Насколько я понимаю, сначала мне нужно сохранять RSS новости на диске, потом при запросе клиента, открывать поток, и точно так же побайтно отправлять клиенту, как и в примере. Я правильно понимаю?

Alligieri, ваши примеры из той же книги, в которой нашёл я.
0
CEO
Эксперт С++
2256 / 1246 / 57
Регистрация: 16.03.2009
Сообщений: 3,588
12.12.2009, 01:09 10
Цитата Сообщение от qwert Посмотреть сообщение
Я нашёл пример в книге. Только там работа происходит с изображениями.
C#
1
2
3
4
5
 byte[] data = File.ReadAllBytes(Path.Combine(
                     Properties.Settings.Default.PictureDirectory, filename));
 
               // Send the picture to the client.
               clientStream.Write(data, 0, data.Length);
Насколько я понимаю, сначала мне нужно сохранять RSS новости на диске, потом при запросе клиента, открывать поток, и точно так же побайтно отправлять клиенту, как и в примере. Я правильно понимаю?

Alligieri, ваши примеры из той же книги, в которой нашёл я.
мой из "C# 2008 для профессионалов"

Добавлено через 1 минуту
Но уже немного переделанный мной - ибо в книгах не всегда так гладко как надо бы
0
46 / 46 / 3
Регистрация: 18.10.2009
Сообщений: 119
12.12.2009, 06:41 11
RSS это просто XML специального формата который отдаётся (!!!) по HTTP
System.Net.HttpListener - читаем MSDN, оттуда же смотрим примеры
Socket вам не понадобится.
Приложение будет строк на 100 кода.
С сокетами я написал Http сервер - 264кб
0
144 / 144 / 32
Регистрация: 26.10.2008
Сообщений: 782
13.12.2009, 15:02  [ТС] 12
Не обязательно по HTTP.
Я сделал через socket и прекрасно работает.

Спасибо всем, кто помог!
0
46 / 46 / 3
Регистрация: 18.10.2009
Сообщений: 119
13.12.2009, 17:10 13
т.е. ты написал HTTP сервер?
0
144 / 144 / 32
Регистрация: 26.10.2008
Сообщений: 782
13.12.2009, 19:47  [ТС] 14
Нет, с помощью TCP.
0
46 / 46 / 3
Регистрация: 18.10.2009
Сообщений: 119
14.12.2009, 04:26 15
Ты этот RSS можешь прочитать, например, Mozilla Firefox? Или IE7-8?
0
144 / 144 / 32
Регистрация: 26.10.2008
Сообщений: 782
14.12.2009, 14:57  [ТС] 16
Да.
0
46 / 46 / 3
Регистрация: 18.10.2009
Сообщений: 119
14.12.2009, 15:44 17
ну значит ты хттп протокол реализовал видимо
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
14.12.2009, 15:44

Заказываю контрольные, курсовые, дипломные работы и диссертации здесь.

Реализация RSS ленты
Добрый день. Есть ли в VS стандартный механизм для реализации RSS ленты? Если нет, то не могли бы...

новостные ленты (RSS)
Вопрос к тем кто использует на сайте RSS. Как яндекс реагирует на установку RSS? Будет ли его...

Импорт RSS ленты
Здравствуйте! Пдоскажите, я получил новости с RSS ленты используя simplepie, а есть ли возможность...

Занесение в бд rss-ленты
Здравствуйте, скажите, пожалуйста, могу ли я в этом коде организовать занос в бд, новостей с...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
17
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2021, vBulletin Solutions, Inc.