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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Пишу первую прогу клиент-сервер с помощью Remoting, Заходите, помогите, кто чем может. 
:(
    Опции темы
CityAC
Дата 18.9.2007, 22:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



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

Посоветовали при интенсивном  обмене данных использовать Remoting. Скачал простенький пример - вроде кое-что понятно - ковыряюсь.
Текущий вопрос: В примере клиент серверу отправлял тесктовые сообщения. Как можно организовать обмен данными sql таблицы?
--------------------
Вижу цель, не вижу припятствий.  
PM MAIL ICQ   Вверх
Experimenter
Дата 19.9.2007, 06:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Цитата

Как можно организовать обмен данными sql таблицы?

Также как в примере, только в прокси-классе объявляешь методы, выполняющие запросы к БД, в клиентском приложении вызываешь эти самые методы...


--------------------
public Zlo FromTwoEvilsChooseSmaller(Zlo zlo1, Zlo zlo2){
    if(zlo1 < zlo2) return zlo1;
    else if(zlo1 > zlo2) return zlo2;
    else throw new Exception("Kill yourself by the wall"); }
PM WWW ICQ   Вверх
CityAC
Дата 19.9.2007, 21:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



Как узнать IP клиента в REmoting?
--------------------
Вижу цель, не вижу припятствий.  
PM MAIL ICQ   Вверх
Experimenter
Дата 20.9.2007, 09:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



На все 100 не уверен, но посмотри:
System.Net.NetworkInformation и System.Net.HttpListener.HttpListenerRequest
и еще, слышал, что клиент не обязан свой айпишник сообщать серверу, поэтому, мне думается, лучше использовать авторизацию



--------------------
public Zlo FromTwoEvilsChooseSmaller(Zlo zlo1, Zlo zlo2){
    if(zlo1 < zlo2) return zlo1;
    else if(zlo1 > zlo2) return zlo2;
    else throw new Exception("Kill yourself by the wall"); }
PM WWW ICQ   Вверх
CityAC
Дата 20.9.2007, 09:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



Наверно откажусь от Remoting   в пользу XML сериализации.
Меня убедили не использовать каркас.
Только вот что не могу понять.
Объект DataSet можно сериализовать, а на DataRow ругается.(вроде как (мой перевод)в этом типе не присутствует коструктор без параметров) - что это значит?
Но если даже передаватьобъект DataSet, то как это делается?
Везде примеры сериализации в xml файл. А как его пустить по сетевому потоку? Типа как в NetworkStream  при бинарной
 сериализации?

Может я не ту сторону смотрю. Короче говоря нужно с  сервера отправить клиенту строку из базы SQL
Строка получается в формате DataRow  я ее вытягиваю из из объекта DataSet
Код

DataSet ds ......
......
int lastRow = ds.Tables["tx_person1"].Rows.Count;
DataRow dr = ds.Tables["tx_person1"].Rows[lastRow - 1];


Какая ф-ция возвращает объект Stream, который используется в XML сериализации?
Как например это делается в следующем коде для NetworkStream
Код

tcpc = new TcpClient(host_textBox.Text, int.Parse(port_textBox.Text));
                //get a Network stream from the server
                NetworkStream nts = tcpc.GetStream();


Это сообщение отредактировал(а) CityAC - 20.9.2007, 10:18
--------------------
Вижу цель, не вижу припятствий.  
PM MAIL ICQ   Вверх
Experimenter
Дата 20.9.2007, 10:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Цитата

Какая ф-ция возвращает объект Stream, который используется в XML сериализации?

WebRequest.GetRequestStream();
XmlTextWriter запишет твои данные хоть в какой стрим, файловый или сетевой... Данные можно сериализовать в XmlTextWriter , или напрямую в сетевой стрим.


--------------------
public Zlo FromTwoEvilsChooseSmaller(Zlo zlo1, Zlo zlo2){
    if(zlo1 < zlo2) return zlo1;
    else if(zlo1 > zlo2) return zlo2;
    else throw new Exception("Kill yourself by the wall"); }
PM WWW ICQ   Вверх
CityAC
Дата 20.9.2007, 11:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



Цитата(Experimenter @  20.9.2007,  10:44 Найти цитируемый пост)
WebRequest.GetRequestStream();

Код

Stream stream = WebRequest.GetRequestStream();

Ошибка: An object reference is required for the nonstatic field, method, or property 'System.Net.WebRequest.GetRequestStream()'
Вообщето я в локальной сети данные передаю.
А эта ф-ция для записи данных в Интернет ресурс
Какой класс вызывает эту ф-цию для локалки ?



Это сообщение отредактировал(а) CityAC - 20.9.2007, 11:11
--------------------
Вижу цель, не вижу припятствий.  
PM MAIL ICQ   Вверх
CityAC
Дата 20.9.2007, 11:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



Цитата(Experimenter @  20.9.2007,  10:44 Найти цитируемый пост)
XmlTextWriter запишет твои данные хоть в какой стрим, файловый или сетевой

А как называется сетевой стрим?
--------------------
Вижу цель, не вижу припятствий.  
PM MAIL ICQ   Вверх
Experimenter
Дата 20.9.2007, 11:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



CityAC, без бутылки не разберешься, код в студию...
Цитата

Вообщето я в локальной сети данные передаю.

Сетевой обмен даже на единственной отключенной от сетки машине между двумя приложениями можно организовать через System.Net (на localhost, к примеру)
Цитата

Ошибка: An object reference is required for the nonstatic field, method, or property 'System.Net.WebRequest.GetRequestStream()'

Извини, что не разжевал, WebRequest напрямую не используют:
Код

HttpWebRequest webreq = (HttpWebRequest)WebRequest.Create(url);

вот так надо.

Это сообщение отредактировал(а) Experimenter - 20.9.2007, 12:03


--------------------
public Zlo FromTwoEvilsChooseSmaller(Zlo zlo1, Zlo zlo2){
    if(zlo1 < zlo2) return zlo1;
    else if(zlo1 > zlo2) return zlo2;
    else throw new Exception("Kill yourself by the wall"); }
PM WWW ICQ   Вверх
CityAC
Дата 20.9.2007, 12:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



Код

 DataSet ds = new DataSet();
            // SqlDataAdapter da = new SqlDataAdapter(query, MyConnection);
            SqlDataAdapter da = new SqlDataAdapter(query2, MyConnection);
            da.Fill(ds, "tx_person1");

int lastRow = ds.Tables["tx_person1"].Rows.Count;
            DataRow dr = ds.Tables["tx_person1"].Rows[lastRow - 1]; //нужно дальше передать эту строку


Как это сделать ума не приложу 
Следующая строка не катит. Ну не хочет он создавать XmlSerializer для объекта DataRow
Код

XmlSerializer ser = new XmlSerializer(typeof(DataRow));


Код

XmlSerializer ser = new XmlSerializer(typeof(DataSet));
            

Uri ourUri = new Uri("http://localhost/");            
HttpWebRequest webreq = (HttpWebRequest)WebRequest.Create(ourUri);
Stream str = webreq.GetRequestStream();// ошибка во время выполнения Cannot send a content-body with this verb-type.




Это сообщение отредактировал(а) CityAC - 20.9.2007, 12:31
--------------------
Вижу цель, не вижу припятствий.  
PM MAIL ICQ   Вверх
Experimenter
Дата 20.9.2007, 13:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Цитата

Ну не хочет он создавать XmlSerializer для объекта DataRow

Как это ни печально, DataRow не подлежит сериализации, так как не имеет публичного конструктора. С сериализацией только на первый взгляд все просто, на самом деле там много подводных камней. Но можно сериализовать DataSet или DataTable

Это сообщение отредактировал(а) Experimenter - 20.9.2007, 13:23


--------------------
public Zlo FromTwoEvilsChooseSmaller(Zlo zlo1, Zlo zlo2){
    if(zlo1 < zlo2) return zlo1;
    else if(zlo1 > zlo2) return zlo2;
    else throw new Exception("Kill yourself by the wall"); }
PM WWW ICQ   Вверх
CityAC
Дата 20.9.2007, 13:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



Ну насчет DAtaRow  - да, я залез в дебри- но нашел  выход. 
Создаю DataSet,помещая в него не всю таблицу а только нужную строку и затем передаю ее в составе DataSet.
а что насчет этой ошибки?
Цитата(CityAC @  20.9.2007,  12:13 Найти цитируемый пост)

код C#
XmlSerializer ser = new XmlSerializer(typeof(DataSet));           
 Uri ourUri = new Uri("http://localhost/);          
  HttpWebRequest webreq = (HttpWebRequest)WebRequest.Create(ourUri);Stream str = webreq.GetRequestStream();// ошибка во время выполнения ошибка во время выполнения Cannot send a content-body with this verb-type.



Это сообщение отредактировал(а) CityAC - 20.9.2007, 13:29
--------------------
Вижу цель, не вижу припятствий.  
PM MAIL ICQ   Вверх
Experimenter
Дата 20.9.2007, 13:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Цитата

ошибка во время выполнения Cannot send a content-body with this verb-type.

Код

webreq.Method = "POST";
webreq.ContentType = "text/xml";

Так попробуй, и если не поможет, поиграйся со свойствами webreq, их у него много, полезных и бесполезных.


--------------------
public Zlo FromTwoEvilsChooseSmaller(Zlo zlo1, Zlo zlo2){
    if(zlo1 < zlo2) return zlo1;
    else if(zlo1 > zlo2) return zlo2;
    else throw new Exception("Kill yourself by the wall"); }
PM WWW ICQ   Вверх
CityAC
Дата 20.9.2007, 13:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



спасибо за ответы Пока ничего не получилось - буду пробовать дальше.
Последний совет помог!!!

Это сообщение отредактировал(а) CityAC - 20.9.2007, 13:59
--------------------
Вижу цель, не вижу припятствий.  
PM MAIL ICQ   Вверх
Experimenter
Дата 20.9.2007, 13:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Цитата

спасибо за ответы Пока ничего не получилось - буду пробовать дальше. 

ты скромничаешь, выкладывай, какие ошибки, помогу тебе как многодетный отец многодетному отцу. Чем смогу, конечно...


--------------------
public Zlo FromTwoEvilsChooseSmaller(Zlo zlo1, Zlo zlo2){
    if(zlo1 < zlo2) return zlo1;
    else if(zlo1 > zlo2) return zlo2;
    else throw new Exception("Kill yourself by the wall"); }
PM WWW ICQ   Вверх
Ответ в темуСоздание новой темы Создание опроса
Прежде чем создать тему, посмотрите сюда:
cully
mr.DUDA
Exception

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

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

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


 




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


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

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