Модераторы: 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   Вверх
Experimenter
Дата 20.9.2007, 14:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 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   Вверх
CityAC
Дата 20.9.2007, 14:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



Цитата(Experimenter @  20.9.2007,  13:56 Найти цитируемый пост)
 помогу тебе как многодетный отец многодетному отцу.

У меня бабушка родом из Давлеканово.
Был там в 5 лет у прабабки. Так что может мы еще и родственники - мир тесен говорят.

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


Бывалый
*


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

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



Ну что едем дальше.

Поток создается, в него загружается XML таблица (таблица с одной строкой), (если можно сериализовать таблицу, то зачем DataSet! - понял  по твоей подсказке)

А как на стороне клиента организовать запрос?

Добавлено через 1 минуту и 49 секунд
Цитата(Experimenter @  20.9.2007,  14:13 Найти цитируемый пост)
почитай на досуге

Покой нам только снится Так что буду читать прям щас.


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


Опытный
**


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

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



Ну если времени нет, то можно вообще без сериализации обойтись, главное, чтоб сервер клиентские запросы распознавал правильно

Клиент, которым я часто пользуюсь для тестирования сетевых приложений:
Код

            Stream s;
            HttpWebRequest webreq;
            HttpWebResponse webresp;
            string response = "";
            string request = "OPERATION WITH DATA";                       

            try
            {
                webreq = (HttpWebRequest)WebRequest.Create("http://127.0.0.1:9999");
                webreq.AuthenticationLevel = AuthenticationLevel.None;
                // если есть прокси:
                // webreq.Proxy = new WebProxy("proxyaddress", 1819);
                // webreq.Proxy.Credentials = new NetworkCredential("Login", "Password");
                webreq.Method = "POST";
                webreq.ContentType = "text/plain"; // в твоем случае "text/xml"
                webreq.KeepAlive = false;
                webreq.Timeout = 100000; // 100000 мс - это дефолт, поэтому можно пропустить

                StreamWriter sw = new StreamWriter(webreq.GetRequestStream(), Encoding.GetEncoding(1251));
                sw.Write(strBuffer);
                // или в твоем случае XmlTextWriter, тогда serializer.Serialize(xmlWriter, dataTable);
                sw.Flush();
                sw.Close();

                Console.WriteLine("Request was sended");
                webresp = (HttpWebResponse)webreq.GetResponse();
                Console.WriteLine(webresp.StatusCode);
                Console.WriteLine(webresp.Headers);
                Console.WriteLine(webresp.CharacterSet.ToString());

                s = webresp.GetResponseStream();
                sr = new StreamReader(s, Encoding.GetEncoding(1251));
                response = sr.ReadToEnd();
                Console.WriteLine("RESPONSE:\r\n" + response);
                sr.Close();
                s.Close();

                FileStream fs = new FileStream(AppDomain.CurrentDomain.BaseDirectory + "\\" + "response.txt", FileMode.OpenOrCreate);
                sw = new StreamWriter(fs, Encoding.GetEncoding(1251));
                sw.Write(webresp.Headers.ToString());
                sw.Write(response.Replace("\n", "\r\n"));
                sw.Flush();
                sw.Close();
            }
            catch (Exception webex)
            {
                response = "ERROR!!! Description: " + webex.Message + "\r\n" + webex.StackTrace;
            }
            finally
            {
                webreq = null;
                webresp = null;
                sw = null;
                sr = null;
                s = null;
            }

Вот вроде бы и все...


--------------------
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, 19:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



Код

Uri ourUri = new Uri("http://127.0.0.1:9999");// если прописываю порт, то ошибка "не могу соединится с удпленным хостом
                                                                         // без порта проходи это место, но правда не знаю еще работает это или нет
            HttpWebRequest webreq = (HttpWebRequest)WebRequest.Create(ourUri);
            webreq.Method = "POST";
            webreq.ContentType = "text/xml";
            Stream streamTab = webreq.GetRequestStream();
           
            TextWriter writerTab = new StreamWriter(streamTab);
            serTab.Serialize(writerTab, temp);
    writerTab.Close(); 
  
      

Это сервер - готов отправлять.

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


Опытный
**


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

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



Цитата

если прописываю порт, то ошибка "не могу соединится с удпленным хостом

Ясен перец, не пройдет, надо чтоб сервер слушал тот порт. Это ж пример!!!
Цитата

Это сервер - готов отправлять.

Это клиент! Или я недоврубился?

Добавлено через 10 минут и 21 секунду
На сервере HttpListener поднимают


--------------------
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, 19:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



Называется ПРИЕХАЛИ!
клиента я написал такого как ты мне прислал (тот что ты используешь для тестирования сетевых приложений)
Тогда получается как написать на стороне сервера?
Че то я в край запутался.

На сервере формируется таблица с одной строкой.И эту таблицу нужно отправить на клиента
А если клиент редактирует эту строку, то ее нужно будет отправить назад на сервер
           
Получается что клиент должен слушать сервер и сервер должен слушать клиента.


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


Опытный
**


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

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



Клиент это тот, кто шлет запросы
Сервер - тот, кто их обрабатывает и отсылает ответы
На Сервере обычно ставят асинхронный слухач. Эх...
Есть тоже пример, но он сырой, додумай сам
Код

public class MyServer
    {
        static void Main()
        {
            MyServer myserv = new MyServer("http://127.0.0.1:9999/");
        }

        public MyServer(string prefix)
        {
            if (HttpListener.IsSupported)
            {
                HttpListener listener = new HttpListener();
                listener.Prefixes.Add(prefix);
                listener.Start();
                Console.WriteLine("Listening...");
                while (true)
                {
                    IAsyncResult iar = listener.BeginGetContext(new AsyncCallback(Start), listener);
                    iar.AsyncWaitHandle.WaitOne();
                }
            }
            else Console.WriteLine("HttpListener is not supported by this System");
        }

        static void Start(IAsyncResult iar)
        {
            HttpListener listener = iar.AsyncState as HttpListener;
            HttpListenerContext hlc = listener.EndGetContext(iar);
            HttpListenerRequest hlReq = hlc.Request;
            ...
        }
    }

В данном случае HttpListenerRequest - это данные, пришедшие от клиента, у него тоже есть стрим (свойство InputStream).
В ответ нужно клиенту отправить OutputStream класса:
Код

HttpListenerResponse hlResp = hlc.Response;

В данном случае это два простейших приложения (с Клиентом), их еще нужно шлифовать и шлифовать под себя.
Доходчиво?


--------------------
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   Вверх
Experimenter
Дата 20.9.2007, 20:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Три добавления:
1. Чтобы упростить задачу нужно к HttpWebRequest прилепить свойство ContentLength, в котором указываешь длину сообщения, на Сервере тогда можно задать массив байтов с этой длиной, чтоб слить данные из InputStream'а. Мне думается, так проще
2. Опять же, чтоб упростить задачу, вместо того, чтоб сериализовать таблицу с одной строкой, не проще ли эти данные слить в стринг с разделителями, например "data1@data2@data3"? Хотя это дело вкуса.
3. Не знаю, что приходит от клиента, но если мало данных (ок. 200 байт), тогда можно GET-запросы отправлять, еще проще...


--------------------
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
Дата 21.9.2007, 02:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



Качнул книгу .NET сетевое программирование для профессионалов.
Почитал про работу сокетов и  асинхронное программирование. Все стало на свои места.
Надо было с этого начать, чтоб не пугать людей своими вопросами.
Завтра, вернее сегодня приду на работу, буду этот ворох, что нагородил в проге разгребать. Специально дома на инете сидел, чтоб вникнуть в суть(на работе ремонт офиса, интернета нет).
Спасибо тебе Экспериментатор, как говорится направил, вывел в люди  smile 
ну, пора и спать.
--------------------
Вижу цель, не вижу припятствий.  
PM MAIL ICQ   Вверх
artechve
Дата 26.9.2007, 15:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Коллеи! подкиньте пож-та ссылок и примеров трехуровневых приложений. 
и где можно почитать обзор  как правильно делать 3L посредством .NET 

я хочу сделать 3L - приложение на .NET , но при этом не испольховать WEBServices, а только MTS/COM+


Это сообщение отредактировал(а) artechve - 26.9.2007, 15:47
PM MAIL   Вверх
Страницы: (2) [Все] 1 2 
Ответ в темуСоздание новой темы Создание опроса
Прежде чем создать тему, посмотрите сюда:
cully
mr.DUDA
Exception

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

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

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


 




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


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

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