Модераторы: gambit
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> .Net Remoting Операция с файлами, Как клиентом отправить файл на сервер??? 
V
    Опции темы
Мурлыкатам_
Дата 5.2.2007, 21:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 265
Регистрация: 5.2.2007
Где: город-герой Минск

Репутация: нет
Всего: 2



smile 
Нун мне пример: Клиент берет файл и отправляет его серверу. Сервер принимает и записывает его в целевую папку. Самый простой и убожественный пример, но чтобы там фигурировала бинарная передача файла...
Хотя бы пример бинарной передачи файлов.

Это сообщение отредактировал(а) Мурлыкатам_ - 9.2.2007, 19:08


--------------------
Хочешь что-то сделать - сделай это сам или попроси помощи на винграде smile
user posted image
PM MAIL ICQ   Вверх
mr.DUDA
Дата 6.2.2007, 18:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


3D-маньяк
****


Профиль
Группа: Экс. модератор
Сообщений: 8244
Регистрация: 27.7.2003
Где: город-герой Минск

Репутация: 2
Всего: 232



Дык если ремоутинг, то на клиенте грузим файл в байтовый массив, вызываем серверный метод с передачей этого массива, а серверный метод принимает и сохраняет у себя в файл.

Добавлено @ 18:58 
Или ремоутинг в целом непонятен ?  smile 


--------------------
user posted image
PM MAIL WWW   Вверх
Мурлыкатам_
Дата 6.2.2007, 19:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 265
Регистрация: 5.2.2007
Где: город-герой Минск

Репутация: нет
Всего: 2



mr.DUDA, Я сегодня уже зачитался литературой, в общем Ремотинг понятен, суть его. Мне не хватает алгоритмов, способов, хитриков. Т.е. с си шарпом я сталкивался тока на учебе, в очень убожественном объеме. И пока очень тяжело самостоятельно все это освоить, без примеров толковых.
Плиз хелп  smile 


--------------------
Хочешь что-то сделать - сделай это сам или попроси помощи на винграде smile
user posted image
PM MAIL ICQ   Вверх
-Mikle-
Дата 8.2.2007, 17:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Невидимка Vingrad'а
***


Профиль
Группа: Экс. модератор
Сообщений: 1672
Регистрация: 22.6.2003
Где: Казахстан, Астана

Репутация: 1
Всего: 59



Блин, тяжко отвечать на такие вопросы... Скажи что у тебя уже есть, с чем разобрался?
Вот специально составленный список вопросов, чтобы понять твои достижения в этом вопросе:

1. не понятно как вообще Remoting сконфигурить, создать и все такое?
2. не понятно как на стороне клиента создать Remoting объект?
3. не понятно как вызывать методы удаленного объекта smile ?

Короче, в чем проблемы? Я в свое время с Remoting'ом до того на-мучился, и потом на-разобрался, что говорил с ним на "языке приказов" smile. Пиши конкретные вопросы - дадим конкретные ответы. И, плиз, если вопросы разные по сути, создавай отдельные темы, так другие участники смогут быстрее найти ответы на свои похожие вопросы. 


--------------------
Если тебе плюют в спину, значит ты впереди...
PM   Вверх
Мурлыкатам_
Дата 29.9.2007, 20:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 265
Регистрация: 5.2.2007
Где: город-герой Минск

Репутация: нет
Всего: 2



Вот чего я добился, благодаря гасподину mr.Duda:

Клиент передает файл на сервер!!!!!  smile 
Правда весьма корявым способом: 
1. Сервер:
Код

using System;
using System.IO;
using System.Runtime.Remoting;
using System.Runtime.Remoting.Channels;
using System.Runtime.Remoting.Channels.Tcp;
using comm;
namespace RemotingServer
{
    
    class Class1
    {
        /// <summary>
        /// The main entry point for the application.
        /// </summary>
        [STAThread]
        static void Main(string[] args)
        {
            Console.WriteLine("go!");
            TcpChannel c = new TcpChannel(32469);
            ChannelServices.RegisterChannel(c);
            RemotingConfiguration.RegisterWellKnownServiceType(
                typeof(comm.CommonObject),
                "RemComObj.tcp",
                WellKnownObjectMode.Singleton);
           Console.ReadLine();
        }
    }

}

Общий объект:
Код

using System;
using System.IO;
using System.Runtime.Remoting;
using System.Runtime.Remoting.Channels;


namespace comm
{
    /// <summary>
    /// Summary description for Class1.
    /// </summary>

        public class CommonObject: MarshalByRefObject
        {
            public CommonObject()
            {
                Console.WriteLine("Starting..");
            }
            public void GetFileToServ(string fileName, byte[] content)
            {   Console.WriteLine("Starting reciving file: {0}", fileName);
                Console.WriteLine("File size: {0}", content.Length);
                // сохраняем у себя
                string filePath = Path.Combine(@"e:\", fileName);
                FileStream file = File.Create(filePath);
                file.Write(content, 0, content.Length);
                file.Close();
            }

        }
    }


3. Клиент:
Код

using System;
using System.IO;
using System.Runtime.Remoting;
using System.Runtime.Remoting.Channels;
using System.Runtime.Remoting.Channels.Tcp;
using comm;
namespace remotingClent
{
    /// <summary>
    /// Summary description for Class1.
    /// </summary>
    class Client
    {
        
        void SendFile(string filePath)
        {
            // зачитываем файл
            
            
        
        }
        
        [STAThread]
        static void Main(string[] args)
        {
           Console.WriteLine("go go go!");
           TcpChannel c = new TcpChannel();
           ChannelServices.RegisterChannel(c);
           object remServO = Activator.GetObject(typeof(comm.CommonObject),
                "tcp://localhost:32469/RemComObj.tcp");
           CommonObject remcomm =  (CommonObject)remServO;
            string filePath = "c:\\3.jpg";
            
            FileStream file = File.Open(filePath, FileMode.Open);
            byte[] content = new byte[file.Length];
            file.Read(content, 0, (int)file.Length);
            Console.WriteLine(file.Length);
            remcomm.GetFileToServ("3333.jpg", content);
            file.Close();

            Console.ReadLine();






        }
    }
}



Осталось тока навести красоту: обработать исключения и предусмотреть передачу файлов папками (по заданию - рекурсивно извлекать файлы из папки).
Собственно вопрос: как организовать рекурсивное извлечение файлов из папки? 
Как передать content красиво, если делать полноценную функцию передачи, чтобы потом можно было отдельно вызвать функцию сервера на сохранение файла?

Это сообщение отредактировал(а) Мурлыкатам_ - 30.9.2007, 14:23


--------------------
Хочешь что-то сделать - сделай это сам или попроси помощи на винграде smile
user posted image
PM MAIL ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Прежде чем создать тему, посмотрите сюда:
cully
mr.DUDA
Exception

Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов.

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, cully, mr.DUDA, Exception.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Распределённые приложения и сеть | Следующая тема »


 




[ Время генерации скрипта: 0.0792 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.