powered by simpleCommunicator - 2.0.56     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / C# DataSet
25 сообщений из 60, страница 2 из 3
C# DataSet
    #38273927
Galadriel75
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
вот в итоге сделал так:

Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
      private void GetAnswer()
        {
                NetworkStream Stream = clientSocket.GetStream();
                var mbyte = new List<byte>();
                byte[] buf = new byte[30];
                if (Stream.CanRead)
                {
                    int cnt = 0;
                    mbyte.Clear();
                    do
                    {
                        cnt = Stream.Read(buf, 0, buf.Length);
                        for (int i = 0; i < cnt; i++) mbyte.Add(buf[i]);
                    }
                    while (Stream.DataAvailable);
                }    
                data = DeserializeData(mbyte.ToArray());
                data.WriteXml("aaa1.xml");
                dataGridView1.DataSource = data.Tables[0].DefaultView;
                Stream.Close();
        }



и попутно кое что и узнал :)

топик можно закрывать! всем спасибо за участие, как-никак - начавши общаться в форуме я начал и думать сам, что привело к конкретному решению :)
...
Рейтинг: 0 / 0
C# DataSet
    #38273934
Фотография skole
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник


Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
77.
78.
79.
80.
81.
82.
83.
84.
85.
86.
87.
88.
89.
90.
91.
92.
93.
94.
95.
96.
97.
98.
99.
100.
101.
102.
103.
104.
105.
106.
107.
108.
109.
110.
111.
112.
113.
114.
115.
116.
117.
118.
119.
120.
121.
122.
123.
124.
125.
126.
127.
128.
129.
130.
131.
132.
133.
134.
135.
136.
137.
138.
139.
140.
private bool StartListening()
        {
            bool result = false;
            bool anyAddress = false;

            
                IPAddress localAddr = IPAddress.Parse(IpPortList[0].ToString());
                _tcpListener = new TcpListener(localAddr, int.Parse(IpPortList[1].ToString()));

            
            try
            {
                run = true;
                _tcpListener.Start();
                connectThread = new Thread(ListenForConnection) { Name = "Listen" };
                connectThread.Start(anyAddress);

                //Logger.AppendAction("TcpListener started waiting for connection.");
                result = true;
            }
            catch (Exception e)
            {
                
                result = false;
            }

            return result;
        }

        
        private void ListenForConnection(object anyAddress)
        {
            while (run)
            {
                if (_tcpListener.Pending())
                {
                    while (run)
                    {
                        using (_tcpClient = _tcpListener.AcceptTcpClient())
                        {
                            if (_tcpClient.Connected)
                            {
                                var ipAddress = ((IPEndPoint)_tcpClient.Client.RemoteEndPoint).Address.ToString();

                                if (TrustedIpArrayList.Contains(ipAddress) || (bool)anyAddress)
                                {
                                    #region Traffic Exchange

                                    Logger.Initialize();


                                    int bytesRead = 0;
                                    try
                                    {
                                        Logger.AppendAction("Start reading stream from TcpClient");

                                        var bytes = new byte[1024];
                                        using (_nStream = _tcpClient.GetStream())
                                        {
                                            string status = "Выполняю транзакцию";
                                            Action<string> updateStatus = (s) => tslStatus.Text = s;

                                            bytesRead = _nStream.Read(bytes, 0, 1024);
                                            var encoder = new ASCIIEncoding();
                                            string request = encoder.GetString(bytes, 0, bytesRead);
                                            string response = "Транзакция прекращена";



                                            if (request.StartsWith(SecurityKey + "|")) //SecurityKey check
                                            {
                                                string[] split = request.Split('|');
                                                string number = split[1];
                                                string amount = split[2];

                                                bool result = false;

                                                updateStatus.Invoke(status);


                                                if (OnPaymentDemand != null)
                                                {
                                                    result = OnPaymentDemand(number, amount, false, ref response);
                                                }
                                                if (!result)
                                                {
                                                    Logger.AppendAction("Call to PaymentRequest failed: " + response);
                                                }
                                                byte[] msg = encoder.GetBytes(response);
                                                _nStream.Write(msg, 0, msg.Length);


                                            }
                                            else
                                            {
                                                Logger.AppendAction("The client provided a wrong security key!");
                                                response = "Authorization failed";
                                                byte[] msg = encoder.GetBytes(response);
                                                _nStream.Write(msg, 0, msg.Length);

                                                
                                            }

                                            status = "Ожидаю соединение";
                                            updateStatus.Invoke(status);
                                        }
                                    }
                                    catch (IOException e)
                                    {
                                        //we do not catch this exception: (a client has unexpectedly disconnected)
                                        Logger.AppendAction(e.Message);
                                    }
                                    catch (Exception e)
                                    {
                                        Logger.AppendAction(string.Format("Exception: {0}", e.Message));
                                        MessageBox.Show(e.Message, "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
                                    }

                                    if (bytesRead == 0)
                                    {
                                        break; //a client has unexpectedly disconnected from the server
                                    }

                                    #endregion
                                }
                            }
                            else
                            {
                                //Logger.AppendAction("The trusted Ip address list doesn't contain this IP address.");
                                continue;
                            }
                        }

                        Thread.Sleep(50); //To reduce consuming system resources while loop
                    }
                }

                Thread.Sleep(50); //To reduce consuming system resources while loop
            }
        }



...
Рейтинг: 0 / 0
C# DataSet
    #38273935
Фотография skole
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Посмотри, как это делаю я
...
Рейтинг: 0 / 0
C# DataSet
    #38273939
Фотография skole
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Здесь кидаю все в строку, но у меня запрос маленький, правильный код здесь, загляни сюда NetworkStream.Read Method
...
Рейтинг: 0 / 0
C# DataSet
    #38273950
carrotik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Galadriel75,

... вообще говоря, поступающий буфер можно писать пакетами в MemoryStream(), который потом (по окончании записи) сохранить в массив ... Не забыть только Position перевести в "0" ..
...
Рейтинг: 0 / 0
C# DataSet
    #38273981
Фотография Изопропил
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: c#
1.
while (Stream.DataAvailable);

это ошибка.
...
Рейтинг: 0 / 0
C# DataSet
    #38274001
Galadriel75
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
skoleПосмотри, как это делаю я
гляну спасибо!
...
Рейтинг: 0 / 0
C# DataSet
    #38274002
Galadriel75
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
carrotikGaladriel75,

... вообще говоря, поступающий буфер можно писать пакетами в MemoryStream(), который потом (по окончании записи) сохранить в массив ... Не забыть только Position перевести в "0" ..

уау тоже вариант!
...
Рейтинг: 0 / 0
C# DataSet
    #38274003
Galadriel75
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Изопропил
Код: c#
1.
while (Stream.DataAvailable);

это ошибка.
но это работает и даже взято с сайта msdn
и почему ошибка то???
...
Рейтинг: 0 / 0
C# DataSet
    #38274015
Galadriel75
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
вот же C# пакостник:
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
  private void button2_Click(object sender, EventArgs e)
        {
            FormDataEdit fDataEdit = new FormDataEdit();
            fDataEdit.ToDo = "+";
            if (_TableName == "Banks")
               fDataEdit.Objects = "-TB~:id;+TB':Name;+TB':Address;+TB':Fax;+TB':Phones;+TB':ContactTo";
            
            if (_TableName == "SprContrAgents")
                fDataEdit.Objects = "-TB:id;+TB:Name;+CB:Bank_ID;+TB:RS;+TB:Address;+TB:Fax;+TB:Phones;+TB:ContactTo";
     

            fDataEdit.Labels = ColsNames;
            fDataEdit.ShowDialog();
          //  MessageBox.Show(fDataEdit.fSQL_Insert);
          //  MessageBox.Show(fDataEdit.fSQL_Update);
         
                if (fDataEdit.ToDo == "+")
                {
                    if(Connect())
                    {
                        SendCmd(_CMD_APPEND + ";" + _TableName + ";" + fDataEdit.fSQL_Insert);
                        GetAnswer();
                        clientSocket.Close();
                    }
                }
                fDataEdit.Dispose();
        }



изначально я создал объект FormDataEdit fDataEdit = new FormDataEdit(); создал тока один раз и не трогал его.
- доверил уборщику мусора - то есть открываем наше окно - оно создает наш объект - внутри того объекта создаются контролы инициализируются - юзер вводит в них текст все ок.
я вот думал - объект уже существует, у объекта есть FormLoad где все прописано и расписано что сделать!
а делается там вот что - динамически создаются TextBox - целая куча! юзер в них вводит текст и нажимает на кнопку
форма прячется (не убивается) - все ок! заходим второй раз - думал ну вот форма же есть - она уже СОЗДАНА и в первый раз отработала нормально!
во второй раз делаем тоже самое, но ничего не отрабатывает - чтобы пользователь ни вводил в TextBoxes - у них всегда свойство Text остается пустым! а по сути что сделали - открыли ранее созданный объект второй раз - только и всего
думал вот же засада очередная... все решилось просто - когда надо объект только тогда его и создаем, попользовались - убиваем!
тогда все заработало нормально!
...
Рейтинг: 0 / 0
C# DataSet
    #38274024
Фотография Изопропил
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Galadriel75но это работает и даже взято с сайта msdn
и почему ошибка то???

отсутствие данных для чтения не означает, что отправляющая сторона завершила передачу.
Внимательно читайте что делает пример в МСДН
...
Рейтинг: 0 / 0
C# DataSet
    #38274332
Galadriel75
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ИзопропилGaladriel75но это работает и даже взято с сайта msdn
и почему ошибка то???

отсутствие данных для чтения не означает, что отправляющая сторона завершила передачу.
Внимательно читайте что делает пример в МСДН
там дополнительно идет проверка на возможность чтения из потока.... я делаю курсач - это не особо критично, так как прога еще ни разу не слетела... думаю все сделаю, тогда можно будет обернуть метод такой же проверкой, так опять же нкжно будет если вдруг окажется что поток нечитабельный, какие-то меры принимать... пожалуй, это не промышленная задача - я даже не уверен, что кто-то будет в исходник заглядывать вообще... и будут ли ее вообще запускать....
...
Рейтинг: 0 / 0
C# DataSet
    #38274427
Фотография Изопропил
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Galadriel75я делаю курсач - это не особо критично,
Критично.
...
Рейтинг: 0 / 0
C# DataSet
    #38274453
Galadriel75
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ИзопропилGaladriel75я делаю курсач - это не особо критично,
Критично.
вот когда за курсач будут платить от 100 баксов, тогда это и будет критично, а по теперешней цене - не критично :)
...
Рейтинг: 0 / 0
C# DataSet
    #38274495
Фотография Изопропил
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Galadriel75,

разруха.
...
Рейтинг: 0 / 0
C# DataSet
    #38274528
Фотография Где-то в степи
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Galadriel75,
авторвсе намного прозаичней - диплом делаю студенту - так там условие - клиент не знает ничего о БД, обращается к серверу (такое крохотное приложение), а сервер шлет в зависимости от того, о чем попросил клиент
Дак это чья инициатива, посадить многозвенку на сокеты, препода или Ваша??
...
Рейтинг: 0 / 0
C# DataSet
    #38274653
Galadriel75
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Где-то в степиGaladriel75,
авторвсе намного прозаичней - диплом делаю студенту - так там условие - клиент не знает ничего о БД, обращается к серверу (такое крохотное приложение), а сервер шлет в зависимости от того, о чем попросил клиент
Дак это чья инициатива, посадить многозвенку на сокеты, препода или Ваша??

оооо, конечно препода (в плане просто трехзвенки)! мне зачем гемор? - я бы сваял даже при моем низком уровне опыта в C# прожку по работе с БД за два-три часа если бы по обычному - клиент-сервер (СУБД)!
только я все еще не уверен что именно на сокетах все делается, но тем не менее я уже сделал и немного боюсь, если с сокетами не угадал :)
...
Рейтинг: 0 / 0
C# DataSet
    #38274673
Фотография Изопропил
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Galadriel75я уже сделал и немного боюсь, если с сокетами не угадал :)
можно и на сокетах, но технологичнее было бы на WCF
...
Рейтинг: 0 / 0
C# DataSet
    #38274676
Galadriel75
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ИзопропилGaladriel75я уже сделал и немного боюсь, если с сокетами не угадал :)
можно и на сокетах, но технологичнее было бы на WCF

оу.... WCF еще ж поизучать надо, а на сокетах я ранее и на Java все успешно делал :)
...
Рейтинг: 0 / 0
C# DataSet
    #38274680
Galadriel75
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
вопрос чуть не в тему:
Код: c#
1.
2.
 CurrencyManager cmgr = (CurrencyManager)this.dataGridView1.BindingContext[this.dataGridView1.DataSource];
                DataRow row = ((DataRowView)cmgr.Current).Row;



как из данного row в цикле повытягивать значения всех полей???
...
Рейтинг: 0 / 0
C# DataSet
    #38274684
Фотография Изопропил
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Galadriel75я ранее и на Java все успешно делал :)
в Java есть и высокоуровневые средства удалённого взаимодействия
...
Рейтинг: 0 / 0
C# DataSet
    #38274690
Фотография Изопропил
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Galadriel75как из данного row в цикле повытягивать значения всех полей???
их нужно вытягивать не из пользовательского интерфейса, а из источника данных
...
Рейтинг: 0 / 0
C# DataSet
    #38274700
Galadriel75
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ИзопропилGaladriel75как из данного row в цикле повытягивать значения всех полей???
их нужно вытягивать не из пользовательского интерфейса, а из источника данных
именно оттуда и вытягивается - не из грида а из источника

string _id = row["Код"].ToString(); - вытянет из поля которое было вот как получено SELECT Id AS [Код]... FROM ... ORDER BY Name

а как в цикле получить значения всех полей записи???
...
Рейтинг: 0 / 0
C# DataSet
    #38274706
Galadriel75
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
о а что если строковый индекс заменить на переменную i
...
Рейтинг: 0 / 0
C# DataSet
    #38274714
Galadriel75
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Galadriel75о а что если строковый индекс заменить на переменную i

гы сработало!!!
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
if (fDataEdit.ToDo == "*")
            {
                CurrencyManager cmgr = (CurrencyManager)this.dataGridView1.BindingContext[this.dataGridView1.DataSource];
                DataRow row = ((DataRowView)cmgr.Current).Row;
                for (int i=0;i < row.Table.Columns.Count-1;i++)
                fDataEdit.Values += row[i].ToString();
                MessageBox.Show(fDataEdit.Values);
                fDataEdit.ShowDialog();
                if (Connect())
                {
                    SendCmd(_CMD_UPDATE + ";" + _TableName + ";" + fDataEdit.fSQL_Update);
                    GetAnswer();
                    clientSocket.Close();
                }
            }
...
Рейтинг: 0 / 0
25 сообщений из 60, страница 2 из 3
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / C# DataSet
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]