Форум программистов, компьютерный форум, киберфорум
C# .NET
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.88/43: Рейтинг темы: голосов - 43, средняя оценка - 4.88
7 / 7 / 2
Регистрация: 20.04.2011
Сообщений: 163

Socket.BeginConnect и чтение/запись данных - проверка кода

13.09.2012, 13:42. Показов 9624. Ответов 71
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
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
private void Connect()
        {
            String server = "192.168.10.100";
            Int32 port = 6000;
            _socket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
            IPAddress ip = IPAddress.Parse(server);
            int iPortNo = System.Convert.ToInt16(port);
            IPEndPoint ipEnd = new IPEndPoint(ip, iPortNo);
            try
            {
                server = "192.168.10.100";
                port = 6000;
                _socket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
                ip = IPAddress.Parse(server);
                iPortNo = System.Convert.ToInt16(port);
                ipEnd = new IPEndPoint(ip, iPortNo);
                //_socket.Blocking = false; ?????
                _socket.BeginConnect(ipEnd, new AsyncCallback(ConnectCallback), _socket);
            }
            catch (Exception e)
            {
                _socket.Dispose();
                MessageBox.Show(e.ToString() + " Connect()");
            }
        }
public void ConnectCallback(IAsyncResult ar)
        {
            while (flag)
                try
                {
                    FileBuffer = new byte[BYTEBUFFER];
                    int j = 0;
                    Socket client = (Socket)ar.AsyncState;
                    buf12 = new byte[BYTEBUFFER];
                    int read = client.Receive(buf12);
                    fs.Write(buf12,0,buf12.Length);
 
                   int readFile =  fs.Read(FileBuffer, 0, FileBuffer.Length);
                    for (int i = 16; i <= read; i = i + 16)
                    {
                        Convert = BitConverter.ToInt16(buf12, i - 12);
                        
                       /* ThreadPool.QueueUserWorkItem(delegate(object sender)
                        {
                            System.Windows.Forms.DataVisualization.Charting.Chart _chart = (System.Windows.Forms.DataVisualization.Charting.Chart)sender;
                            _chart.Invoke(actionChart, new object[] {_chart, BitConverter.ToInt16(buf12, i - 12)});
                        },chart1);*/
                        if (chart1.InvokeRequired == false)
                            MessageBox.Show("FATAL");
                           Invoke(new Action(() =>
                        {
                            if(readFile !=0)
                                textBoxThread.AppendText(String.Format("{0}:{1}:{2}:{3}", FileBuffer[i - 16].ToString(), FileBuffer[i - 15].ToString(), BitConverter.ToInt16(FileBuffer, i - 14).ToString(), BitConverter.ToInt16(FileBuffer, i - 12).ToString()) + Environment.NewLine);
                            textBox1.Text=String.Format("{0}:{1}:{2}:{3}", buf12[i - 16].ToString(), buf12[i - 15].ToString(), BitConverter.ToInt16(buf12, i - 14).ToString(), Convert.ToString()) + Environment.NewLine;
                          //  chart1.Series[0].Points.AddY(Double.Parse(BitConverter.ToInt16(buf12, i - 12).ToString()));
                          //  textBoxThread.AppendText((j == BitConverter.ToInt16(buf12, i - 12) || j == 1000) ? "" : j.ToString() + Environment.NewLine);
                        }));
                       /* if (i % 400 == 0 || i == 16)
                        {
                            chart1.BeginInvoke(new Action(() =>
                            {
                                chart1.Series[0].Points.AddY(Convert);
                            }));
                        }*/
                    }
                    //    client.BeginReceive(buf12, 0, buf12.Length, 0,
                    //           new AsyncCallback(ReceiveCallback), buf12);
                }
                catch (Exception e)
                {
                    fs.Close();
                    MessageBox.Show(e.ToString() + " ConnectCallback(IAsyncResult ar)"); return;
                }
            
        }
Извеняюсь за быдло код.
Данные поступают я их вывожу в контролы.Также хотелось бы реализовать запись данных в файл и одновременное чтение в другом месте.как мне это реализовать без "Задержки данных" ибо мы используем асинхронный коннект. Также хотелось бы спросить у ГУРУ у меня "правильная логика" полученния данных вывод и всего остального?

Добавлено через 40 минут
И ещё если убрать комментарии возле Chart'a то видно не вооруженным глазом что данные "запаздывают" в Textbox'e я вижу только один путь исправления. "оптимизировать" Chart т.е. выводить только текущие значения(пакеты который только что пришли и прошлый пакет вырисовывать, а не все что бы график не выравнивался и не "скручивался"), но даже он не даст "точных" текущих значений на клиете(они не будут совпадать на сервере) как вывесте текущее значения в Chart??или как вылечить болезнь с "запаздыванием" данных если она вообще решается на моё примере(т.к. используем асинхронный коннект)
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
13.09.2012, 13:42
Ответы с готовыми решениями:

как передать начальные данные в Socket.BeginConnect
Добрый день. У System.Net.Socket есть метод который завершает асинхронное подключение к сокету и выдает начальные данные (принятые от...

Реализовать чтение данных ИБП Ippon через serial socket
Здравствуйте пытаюсь сделать такую задачу. У меня есть бесперебойник ippon я поставил себе такую задачу, нужно что бы по средством...

Чтение файла, чтение названия папки где находится файл, запись данных на PHP
Допустим у нас есть структура с папками типа Large -&gt; Vehicles -&gt; Firetruck_0 В этой папке лежит файл формата .dat Что нужно сделать? ...

71
7 / 7 / 2
Регистрация: 20.04.2011
Сообщений: 163
13.09.2012, 15:56  [ТС]
Студворк — интернет-сервис помощи студентам
Глупый вопрос.как мне сделать отправку данных когда ещё идёт приём..т.е. будет происходить постоянно получение данных и одновременно я могу посылать данные на сервер..я сделал в лоб на кнопку повесил bool flag = !flag; а в клиенте if(flag) SendData(...);?
0
82 / 82 / 24
Регистрация: 30.09.2011
Сообщений: 404
Записей в блоге: 6
13.09.2012, 16:04
И правда глупый, ты не сможешь что-то оправить в сокет, пока ожидаешь приема или принимаешь данные, выпадет ошибка. По крайне мере я не знаю таких способов. НО можно попробовать использовать неблокирующие сокеты. И посылать очередь из команд. Но опять таки, смотря что ты подразумеваешь под приемом - ожидание приема, или процесс получения данных?
0
7 / 7 / 2
Регистрация: 20.04.2011
Сообщений: 163
13.09.2012, 16:13  [ТС]
Стало запутанно..Не понял до конца смысл класса событий и класса клиента ..если это сводится к асинхронному коннекту..почему бы не воспользоваться простым BeginConnect с Invok'ом только проблема встанет с Chart'ами а их как минимум 2..

я побывал методом в лоб как я и говорил bool flag повесил на кнопку..а в
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
.....
bool flag = false;
.....
_socket.BeginConnect(ipEnd, new AsyncCallback(ConnectCallback), _socket);
.....
        private void buttonSend_Click(object sender, EventArgs e)
        {
            flag= !flag;
        }
        public void ConnectCallback(IAsyncResult ar)
        {
            Socket client = (Socket)ar.AsyncState;
            while (flag)
                try
                {
                    buf12 = new byte[BYTEBUFFER];
                    int read = client.Receive(buf12);
                    if (send)
                    {
                        BoolSend[0] = 1;
                        client.Send(BoolSend);
                    }
 
                    for (int i = 16; i <= read; i = i + 16)
                    {
                        Convert = BitConverter.ToInt16(buf12, i - 12);
                        Invoke(new Action(() =>
                        {
                            textBoxThread.AppendText(String.Format("{0}:{1}:{2}:{3}", FileBuffer[i - 16].ToString(), FileBuffer[i - 15].ToString(), BitConverter.ToInt16(FileBuffer, i - 14).ToString(), BitConverter.ToInt16(FileBuffer, i - 12).ToString()) + Environment.NewLine);
                            textBox1.Text = String.Format("{0}:{1}:{2}:{3}", buf12[i - 16].ToString(), buf12[i - 15].ToString(), BitConverter.ToInt16(buf12, i - 14).ToString(), Convert.ToString()) + Environment.NewLine;
                            chart1.Series[0].Points.AddY(Double.Parse(BitConverter.ToInt16(buf12, i - 12).ToString()));
                        }));
                    }
                }
                catch (Exception e)
                {
                    MessageBox.Show(e.ToString());
                }
        }
и данные принимаются постоянно они будут приниматся неделю, а я могу в любое время послать туда Данные..я всё верно сделал?
И главное что я отправляю данные..но я как то глупо это делаю чз условие и чз флаг "ТОПОРным" методом.а как сделать правильнее?
0
82 / 82 / 24
Регистрация: 30.09.2011
Сообщений: 404
Записей в блоге: 6
13.09.2012, 16:30
Как ты пошлет данные , если ты в данный момент их принимаешь? Я просто не знаю о такой фичи в сокетах) В общем пример не правильный, работать не будет.
вот тебе пример отчасти правильного асинхронного клиента:
Асинхронный клиент
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
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
using System;
using System.Collections.Generic;
using System.Net;
using System.Net.Sockets;
using System.Text;
using System.Threading;
using System.IO;
 
namespace Client
{
 
    public class StateObject
    {
        public Socket workSocket = null;
        public const int bufferSize = 256;
        public byte[] buffer = new byte[bufferSize];
        public StringBuilder sb = new StringBuilder();
    }
 
    class ClientAsync
    {
        private Socket client;
        private IPEndPoint IP;
 
        public static ManualResetEvent ConnectDone = new ManualResetEvent(false);
        public static ManualResetEvent ReceiveDone = new ManualResetEvent(false);
        public static ManualResetEvent SendDone = new ManualResetEvent(false);
 
        private String cmd;
 
 
 
        public ClientAsync(string ip, Int32 port)
        {
            try
            {
                cmd = String.Empty;
                IP = new IPEndPoint(IPAddress.Parse(ip), port);
                client = new Socket(IP.AddressFamily, SocketType.Stream, ProtocolType.Tcp);
              
            }
            catch (SocketException e)
            {
                Console.WriteLine(e.ToString());
            }
        }
 
        public void Start()
        {
            AsyncCallback OnCon = ConnectCallBack;
            client.BeginConnect(IP, OnCon, client);
            
            ConnectDone.WaitOne();
 
            Console.WriteLine("Старт...");
            
        }
 
 
        private void ConnectCallBack(IAsyncResult ar)
        {
            Socket socket = (Socket)ar.AsyncState;
            socket.EndConnect(ar);
            if (socket.Connected)
            {
                Console.WriteLine("Подключение установлено к " + socket.RemoteEndPoint.ToString());
                ConnectDone.Set();
            }
            else
            {
                Console.WriteLine("Ошибка подключения к серверу!");
            }
        }
 
        public void Send(string msg)
        {
            byte[] bytes = Encoding.UTF8.GetBytes(msg);
            client.BeginSend(bytes, 0, bytes.Length, 0, new AsyncCallback(SendCallBack), client);
        }
 
        private void SendCallBack(IAsyncResult ar)
        {
            try
            {
 
                Socket handler = (Socket)ar.AsyncState;
                int bytes = handler.EndSend(ar);
                Console.WriteLine("Отправлено {0} байт серверу.", bytes);
                SendDone.Set();
            }
            catch (Exception e)
            {
                Console.WriteLine(e.ToString());
            }
            
        }
 
 
        private void Receive(Socket socket)
        {
            try
            {
                StateObject state = new StateObject();
                state.workSocket = socket;
 
                socket.BeginReceive(state.buffer, 0, StateObject.bufferSize, 0, new AsyncCallback(ReceiveCallBack), state);
            }
            catch (Exception e)
            {
                Console.WriteLine(e.ToString());
            }
        }
 
        private void ReceiveCallBack(IAsyncResult ar)
        {
            try
            {
                StateObject state = (StateObject)ar.AsyncState;
                Socket Client = state.workSocket;
                int ReadByte = Client.EndReceive(ar);
                if (ReadByte > 0)
                {
                    Console.WriteLine("Получено байт: " + ReadByte);
                    state.sb.Append(System.Text.Encoding.UTF8.GetString(state.buffer, 0, ReadByte));
                    Client.BeginReceive(state.buffer, 0, StateObject.bufferSize, 0, new AsyncCallback(ReceiveCallBack), state);
                    //Console.WriteLine(state.sb.ToString());
                }
                else
                {
                    if (state.sb.Length > 0)
                    {
                        cmd = state.sb.ToString();
                        Console.WriteLine("Принято " + cmd);
                    }
                    ReceiveDone.Set();
                }
            }
            catch (Exception e)
            {
                Console.WriteLine(e.ToString());
            }
        }
 
        public void Disconnect()
        {
            try
            {
                ConnectDone.Close();
                SendDone.Close();
                ReceiveDone.Close();
                if (client.Connected)
                {
                    client.Disconnect(false);
                }
            }
            catch (Exception e) { Console.WriteLine(e.ToString()); }
            finally { client.Close(); }
 
        }
    }
}


А правльней будет вызывать методы Receive и Send с формы. И не нежны никакие флаги. Но я повторюсь ещё раз, я не знаю можно ли посылать данные по сокету по он их принмиает, я склоняюсь к тому что нельзя.
1
7 / 7 / 2
Регистрация: 20.04.2011
Сообщений: 163
13.09.2012, 16:35  [ТС]
да вот именно что всё работает глупым методом в лоб всё работает данные отсылаются и сервер их принимает..мне кажется потому что асинхронный коннект другой магии тут нету))..

Добавлено через 1 минуту
да кстати по поводу примера я его прочитал и начал делать свой клиент..т.к тот из за разрыва соединения не работало ничего=(
0
82 / 82 / 24
Регистрация: 30.09.2011
Сообщений: 404
Записей в блоге: 6
13.09.2012, 16:36
Ну если работает глупым методом, то бери мой пример и добавляй туда захардкоренную на бесконечный цикл прием данных. А на форму выведи кнопку для отправки данных. и все, в итоге ты постоянно получаешь данные от сервера и при нажатии на кнопку их отправляешь.
0
7 / 7 / 2
Регистрация: 20.04.2011
Сообщений: 163
13.09.2012, 16:37  [ТС]
Да и ещё если делать Chart1.Invoke(new Action(() => {Chart1.Series[0].......}));
Данные идут с "задержкой"
0
82 / 82 / 24
Регистрация: 30.09.2011
Сообщений: 404
Записей в блоге: 6
13.09.2012, 16:37
videoLoL, у тебя очень грубые ошики в твоей коде, одна из них - это то, что ты не делаешь завершение асинхронного коннекта, ты должен обязательно вызвать EndConncet в CallBack'е, уначе у тебя не завершится работа.
0
7 / 7 / 2
Регистрация: 20.04.2011
Сообщений: 163
13.09.2012, 16:39  [ТС]
Вопрос уже стоит не как организован клиент..я знаю что он у меня убогий=(..но как мне в Chart1 выводить график без задержки вывода данных в TextBox???

Добавлено через 26 секунд
я делаю
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
        private void button1_Click_1(object sender, EventArgs e)
        {
            ConButton.Enabled = flag;
            flag = false;
            button1.Enabled = flag;
            Thread.Sleep(100);
            if (_socket != null)
            {
                _socket.Shutdown(SocketShutdown.Both);
                _socket.Close();
                _socket = null;
            }
        }
0
82 / 82 / 24
Регистрация: 30.09.2011
Сообщений: 404
Записей в блоге: 6
13.09.2012, 16:42
На счет задержи, не знаю, тести прогу, меняй способы. С задержаками никогда не сталкивался, всегда все утраивало. Может народ с форму че и подскажет)

Добавлено через 1 минуту
Цитата Сообщение от videoLoL Посмотреть сообщение
_socket.Shutdown(SocketShutdown.Both);
может вылится ошибка, возьми в блок try catch

Добавлено через 1 минуту
Как из вариантов, перепиши клиента, быть может из за его "убогости" происходят задержки, тут спорный вопрос.
0
7 / 7 / 2
Регистрация: 20.04.2011
Сообщений: 163
13.09.2012, 16:48  [ТС]
да вот именно из за этого асинхронного коннекта если я данные вывожу в 1 TextBox чз Invoke то всё хорошо видно как микросекунды летят.(0-999) а когда подключаю Chart1 чз Invoke то тут начинается беда в TextBox'e видно как пролистываются микросекунды даже видно как пролистываются доли микросекунд а это значит что данные выводится с задержкой в связи с тем что Chart1 Отрисовывает график..а если его не отчищать то график будет сворачиватся и выравниватся и тогда аще коллапс..данные в Textbox'е с ума сходят=( то данные другие то все 0 то другие и т.д. как тут поступить?

Добавлено через 1 минуту
асинрохнный поток на вывод?или что Thread?ThreadPool (кстати я так и не пользовался им что это? можете объяснить пожалуйста?) или ещё что нибудь..или у меня концепция в корень не верная..если эта не верная то даже не знаю как уже программу переделать=(

Добавлено через 3 минуты
Предлагаю вернутся к "баранам" и всё с чистого листа..как вы видите сделать этот проект?..
Синхронный коннект не позволит менять значения на форме т.к. работает в 1 поток.
в Асинхронном при подключение Chart чз Invoke и TextBox чз Invoke (кстати данные одни и теже) то данные на текст боксе выводятся с задержкой как и в Chart(в связи с тем что Chart отрисовывает данные)

какой выход?
0
82 / 82 / 24
Регистрация: 30.09.2011
Сообщений: 404
Записей в блоге: 6
13.09.2012, 16:49
videoLoL, так отрисовка графики завист от мощности твоего компа))) тем более если ты рисуешь в микросекундах. Тут уже сама прога лагать начинает, как вариант увеличить интервал перерисовки, дабы снизить нагрузку.


Цитата Сообщение от videoLoL Посмотреть сообщение
асинрохнный поток на вывод
поясни или тыкни на мою фразу, из за чего возник вопрос)
1
7 / 7 / 2
Регистрация: 20.04.2011
Сообщений: 163
13.09.2012, 16:51  [ТС]
нет это был мой вопрос что мне сделать с этим Chart'ом сделать поток на вывод?а асинхронный это я печатал задумался.... вообщем не берите в голову
0
82 / 82 / 24
Регистрация: 30.09.2011
Сообщений: 404
Записей в блоге: 6
13.09.2012, 16:52
Цитата Сообщение от videoLoL Посмотреть сообщение
какой выход?
Как делал я, когда писал сервер.
Начал естественно с синхронного способами, у меня что получалось что-то нет. Потом забил переписал все на асинхронный,там вроде пошло, на нем и остановился. Писал дня 4, в итоге получились одинаковые серваки, с разницей только в синхронности.
В вашей ситуации. ПЕРВОЕ, видимо вам очень не хочется это делать, почитать мат часть по асинхронным сокетам и переписать все как должно быть, и только после этого смотреть почему зависает, как зависает и искать эти ошибки.
1
7 / 7 / 2
Регистрация: 20.04.2011
Сообщений: 163
13.09.2012, 16:52  [ТС]
эм интонацию не передать текстом..смысл понял попробую завтра благодарю за помощь и разъяснения ...если что тема ещё не закрыта)..завтра отпишусь)
0
82 / 82 / 24
Регистрация: 30.09.2011
Сообщений: 404
Записей в блоге: 6
13.09.2012, 16:53
videoLoL, Удачи в том случае) на свежую голову обычно лучше думается)
1
7 / 7 / 2
Регистрация: 20.04.2011
Сообщений: 163
13.09.2012, 16:54  [ТС]
Первое вы имели ввиду - Асинхронный сокет на клиенте?
0
82 / 82 / 24
Регистрация: 30.09.2011
Сообщений: 404
Записей в блоге: 6
13.09.2012, 16:57
videoLoL, Да, асинхронный клиент.
1
7 / 7 / 2
Регистрация: 20.04.2011
Сообщений: 163
14.09.2012, 06:23  [ТС]
Не понимаю как сделать одновременную отправку сообщений когда ещё идёт приём данных..
что вешать на кнопку?я делаю топорным методом вешаю на событие bool flag = !flag;как бы вы это сделали?
0
82 / 82 / 24
Регистрация: 30.09.2011
Сообщений: 404
Записей в блоге: 6
14.09.2012, 09:37
videoLoL, однако тяжело судить, можно или нельзя сделать так то так то, без исходников сервера. Код должен быть следующий:
Для приема делаешь бесконечный цикл на прием:
while(stopper)
Receive();

Для отправки в событии button_click пишешь:
Send("msg");
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
14.09.2012, 09:37

Чтение/запись hex кода файла
Я сделал процедуру записи в указанный файл, в указанный адрес нужный код hex. Вот: procedure writebyte(filename:string; Address:...

Проверка прав доступа (чтение/запись) в директории
Нужно проверить, доступна ли данная директория (к примеру &quot;D:\\readonly_folder\&quot;) для записи/чтения файлов. Подскажите, как можно...

Open/Save Dialog. Сериализация данных. Запись/чтение данных объектов в/из потока.
Описана файловая переменная FileOfFilms: file of TFilmArr и переменная, содержащая имя файла FileName: string, на форме присутствуют...

Чтение текстового файла. Парсинг его данных. Создание исключений для данных. Запись свойств объектов в файл
Проблема такая. Есть файл data.txt. В нем например какие-то данные. Landon Donovan, 150, A Hulk Hogan , 100, M Duke Nukem, 50,...

Чтение и запись данных
Здравствуйте, я записываю данные в файл (длинный код): vsevolod-s10.hut4.ru\открытия.txt И читаю я их таким образом:...


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

Или воспользуйтесь поиском по форуму:
40
Ответ Создать тему
Новые блоги и статьи
Из невошедшего на форум (диалог с ИИ-гугла)
zorxor 29.07.2026
А вот, что интересно, сказал мне ИИ-гугла: Этот текст — эмоциональный пост пользователя под ником zorxor на интернет-форуме (вероятно, посвященном мистике, непознанному или альтернативной науке). . . .
Был праздник вчера, а я и не знал.
kumehtar 28.07.2026
27. 07. 2026г. Intel Core 2 Duo исполнилось 20 лет Новости компьютерного мира и их обсуждение (4) Салют, шампанское, овации! :drink:
Нейтральные знания, чистый код - бла-бла-бла-бла, на самом деле кликбейт и самореклама, плагиат, и вот почему
Hrethgir 27.07.2026
То-есть отклонение такой публикации говорит само за себя, и пусть только возьмут на вооружение после отклонения публикации - это будет чистейшим актом плагиата. Отклонял Хабр. Дословно, отклонённая. . .
тв 16 бой ии
anaschu 27.07.2026
Великий Перелом ИИ: Как уравнения ОДУ Radau дожали цензурные фильтры Алисы Фиксируем в мемофонде Теории Всего беспрецедентный факт в истории ИИ-зондирования. В затяжном многораундовом. . .
мв 15. непроверенное, возможно, глюк
anaschu 27.07.2026
НАУЧНО-АНАЛИТИЧЕСКИЙ ОТЧЕТ. РАЗДЕЛ 1. 1: «НАУКА» (РАСШИРЕННАЯ СТЕХИОМЕТРИЧЕСКАЯ И ГЕНЕТИЧЕСКАЯ ВЕРСИЯ)Тема: Теоретическое обоснование инвариантности 19-мерного тензорного ядра непрерывных ОДУ и. . .
Очистка реквизитов и табличных частей документа при копировании (вариант 2)
Maks 26.07.2026
Алгоритм из решения ниже разработан на примере нетипового документа "ЗаявкаНаРаботу", разработанного в КА2. Задача: Заменить алгоритм запрета копирования документов для сотрудников с ролью "Стажер",. . .
Доктрина интенционального знания - Доктрина для портала "Срез".
Hrethgir 25.07.2026
Может найдётся кто захочет оценить доктрину. . . Написания правил участия для меня роскошь, требующая лимита времени, поэтому все сообщения не прошедшие модерацию будут видны только участникам портала,. . .
сукцессия 44. Решил подать на припринт в межународные сервисы препринтов. Но нужно одобрение от ученых
anaschu 25.07.2026
Английский вариант. Пока кто то не одобрит мою личность, мне не получиться это опубликовать на препринте. Но заявку на публикацию статьи я сегодня подам.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru