powered by simpleCommunicator - 2.0.53     © 2025 Programmizd 02
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Некорректная передача сообщения
23 сообщений из 23, страница 1 из 1
Некорректная передача сообщения
    #39245273
Emiliya_Emili
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Подскажите почему данные на форме отображаются нормально а в переменной в странной форме
это очень мешает при попытке считать путь файла
...
Рейтинг: 0 / 0
Некорректная передача сообщения
    #39245275
Фотография Cat2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
Emiliya_Emili,

Нормальная форма. Вы же размер буфера установили в размер 2048?

\V - вертикальная табуляция
...
Рейтинг: 0 / 0
Некорректная передача сообщения
    #39245277
Emiliya_Emili
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Cat2, а как мне тогда путь к файлу прочитать
нужно получать путь к файлу или папке и открывать, но это нолики не дают
...
Рейтинг: 0 / 0
Некорректная передача сообщения
    #39245280
Emiliya_Emili
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Cat2, можно как-то корректировать размер буфера
иногда пару символов передается а иногда целые файлы
...
Рейтинг: 0 / 0
Некорректная передача сообщения
    #39245284
Фотография Cat2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
Emiliya_Emili,
Вы же не написали, какую задачу решаете
...
Рейтинг: 0 / 0
Некорректная передача сообщения
    #39245285
Фотография buser
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Emiliya_Emili, странный код... while connected а в нем read stream... Вы обе стороны пишите?
...
Рейтинг: 0 / 0
Некорректная передача сообщения
    #39245289
Emiliya_Emili
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Cat2,
попыталась обрезать лишнее но не получается
strData = strData.Substring(0,strData.LastIndexOf("\V"));
var second_word = strData.Remove(strData.IndexOf('\V'), strData.Length - strData.IndexOf('\V')+2);
...
Рейтинг: 0 / 0
Некорректная передача сообщения
    #39245290
Emiliya_Emili
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
buser,
да в одном проекте и клиент и сервер
...
Рейтинг: 0 / 0
Некорректная передача сообщения
    #39245292
Emiliya_Emili
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Cat2,
реализую клиент серверное приложение по протоколу tcp с возможностью просмотра файлов сервера и их скачиванием
работа между компьютером -сервером и компьютерами-клиентами
...
Рейтинг: 0 / 0
Некорректная передача сообщения
    #39245299
Фотография buser
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Emiliya_Emili, сделайте свой протокол... с заголовком сообщения и его концом... чтоб понимать какого рода информация идет...
или определите набор "команд" и возможных оnветов...
ДА - Read, если мне не изменяет, возвращает сколько РЕАЛЬНО было прочитано...
...
Рейтинг: 0 / 0
Некорректная передача сообщения
    #39245300
Emiliya_Emili
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
buser,

а можно на каком-нибудь простом примере
...
Рейтинг: 0 / 0
Некорректная передача сообщения
    #39245315
Emiliya_Emili
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
подскажите почему данные то ли не отправляются то ли не отображаются
хотя получены верно

Код: 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.
   private TcpListener Server;
        private TcpClient remoteClient; private TcpClient localClient;
        private Thread thClient; private Thread thServer;

        private void btnServer_Click(object sender, EventArgs e)//кнопка сервер
        {
            Server = new TcpListener(IPAddress.Any, 6785);
            Server.Start();
            thServer = new Thread(() =>
            {
                remoteClient = Server.AcceptTcpClient();
                SendData(GetLocDir());
                byte[] buffer = new byte[2048];

                while (remoteClient.Connected)
                {
                    Array.Clear(buffer, 0, buffer.Length);
                    remoteClient.GetStream().Read(buffer, 0, buffer.Length);
                    string strData = Encoding.Default.GetString(buffer);                
                    int b = strData.IndexOf("\0");
                    strData = strData.Substring(0, b);
                    this.Invoke((Action)(() =>
                    {
                        try
                        {
                            string[] dirs = Directory.GetDirectories(strData);
                            string poddir = String.Join("/", dirs);
                            GetFiles(strData);
                        }
                        catch (Exception) { }                       
                    }));
                }
            });
            thServer.Start();
        }

        private void btnConnect_Click(object sender, EventArgs e)//кнопка клиент
        {
            localClient = new TcpClient();
            localClient.Connect("127.0.0.1", 6785);
            thClient = new Thread(() =>
            {
                byte[] buffer = new byte[1024];
                while (localClient.Connected)
                {
                    Array.Clear(buffer, 0, buffer.Length);
                    localClient.GetStream().Read(buffer, 0, 1024);
                    string strData = Encoding.Default.GetString(buffer);
                    //int a = Convert.ToInt32(strData.Substring(0, strData.LastIndexOf("@")));
                    //strData = strData.Substring(b, a);
                    this.Invoke((Action)(() =>
                    {
                        listView1.Clear();
                        string[] tx = strData.Split('/');
                        foreach (string s in tx)
                        {
                            listView1.Items.Add(s, 1);
                            ls.Add(s);
                        }
                    }));

                }
            });
            thClient.Start();
            SendData(GetLocDir());
        }
...
Рейтинг: 0 / 0
Некорректная передача сообщения
    #39245318
Emiliya_Emili
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
как в try-catch при исключение не выдавать ошибку а просто идти дальше игнорируя код из try
...
Рейтинг: 0 / 0
Некорректная передача сообщения
    #39245352
Фотография Cat2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
Emiliya_EmiliCat2,
реализую клиент серверное приложение по протоколу tcp с возможностью просмотра файлов сервера и их скачиванием
работа между компьютером -сервером и компьютерами-клиентами
А чем вам не угодили обычные средства из System.IO?
Например,

Код: c#
1.
File.Exists(@"\\comp_name\d$\myfile.txt")



Проверяет наличие файла d:\myfile.txt на компе comp_name.
...
Рейтинг: 0 / 0
Некорректная передача сообщения
    #39246085
Emiliya_Emili
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
подскажите ка отправлять файлы частями?
...
Рейтинг: 0 / 0
Некорректная передача сообщения
    #39246323
Emiliya_Emili
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
код ошибок не выдает но и не загружает файл
Код: 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.
162.
163.
164.
165.
166.
167.
168.
        const string soob = "001";
        const string info = "002";
        const string fail = "003";

        private void btnServer_Click(object sender, EventArgs e)//кнопка сервер
        {
            Server = new TcpListener(IPAddress.Any, 6785);
            Server.Start();
            thServer = new Thread(() =>
            {
                remoteClient = Server.AcceptTcpClient();
                SendData(soob, GetLocDir());
                byte[] buffer = new byte[2048];

                while (remoteClient.Connected)
                {
                    Array.Clear(buffer, 0, buffer.Length);
                    remoteClient.GetStream().Read(buffer, 0, buffer.Length);
                    string strData = Encoding.Default.GetString(buffer);                
                    int b = strData.IndexOf("\0");
                    b = b - 3;
                    var messege = strData.Substring(0, 3);
                    strData = strData.Substring(3, b);
                    this.Invoke((Action)(() =>
                    {
                        if (messege == soob)
                        {
                            try
                            {
                                string poddir = String.Join("/", Directory.GetDirectories(strData));/////подправить отображение 
                                string file = String.Join("/", Directory.GetFiles(strData));/////подправить отображение
                                SendData(soob, poddir + file);
                            }
                            catch (Exception) { }
                        }
                        else if (messege == info)
                        { 
                            FileInfo inf = new FileInfo(strData);
                            string ad = inf.Name;
                            string gh = Convert.ToString(inf.Length);
                            string ifa = ad + "@" + gh;
                            SendData(info, ifa);

                            BinaryFormatter bf = new BinaryFormatter();
                            MemoryStream ms = new MemoryStream();
                            bf.Serialize(ms, inf);
                            ms.Position = 0;
                            byte[] infobuffer = new byte[ms.Length];
                            int r = ms.Read(infobuffer, 0, infobuffer.Length);
                            ms.Close();

                            // байты главного заголовка
                            byte[] header = new byte[infobuffer.Length];

                            // Общий массив байтов
                            byte[] total = new byte[header.Length + infobuffer.Length + inf.Length];

                            Buffer.BlockCopy(header, 0, total, 0, header.Length);
                            Buffer.BlockCopy(infobuffer, 0, total, header.Length, infobuffer.Length);

                            // Добавим содержимое файла в общий массив сетевых данных
                            FileStream fs = new FileStream(strData, FileMode.Open, FileAccess.Read);
                            fs.Read(total, header.Length + infobuffer.Length, Convert.ToInt32(inf.Length));
                            fs.Close();

                            // Отправим данные подключенным клиентам
                            if (localClient != null && localClient.Connected)
                            {
                                NetworkStream ns = localClient.GetStream();
                                // Так как данный метод вызывается в отдельном потоке рациональней использовать синхронный метод отправки
                                ns.Write(total, 0, total.Length);
                            }
                            else if (remoteClient != null && remoteClient.Connected)
                            {
                                NetworkStream ns = remoteClient.GetStream();
                                ns.Write(total, 0, total.Length);
                            }
                           
                        }                       
                    }));
                }
            });
            thServer.Start();
        }

        private void btnConnect_Click(object sender, EventArgs e)//кнопка клиент
        {
            localClient = new TcpClient();
            localClient.Connect("127.0.0.1", 6785);
            thClient = new Thread(() =>
            {
                byte[] buffer = new byte[1024];
                while (localClient.Connected)
                {
                    Array.Clear(buffer, 0, buffer.Length);
                    localClient.GetStream().Read(buffer, 0, 1024);
                    string strData = Encoding.Default.GetString(buffer);
                    int b = strData.IndexOf("\0");
                    b = b - 3;
                    var messege = strData.Substring(0, 3);
                    strData = strData.Substring(3, b);
                    this.Invoke((Action)(() =>
                    {
                        if (messege == soob)
                        {
                            listView1.Clear();
                            string[] tx = strData.Split('/');
                            foreach (string s in tx)
                            {
                                listView1.Items.Add(s, 1);
                                ls.Add(s);
                            }
                        }
                        else if (messege == info)
                        {
                            string[] tx = strData.Split('@');
                            string nam = tx[0];
                            int size = Convert.ToInt32(tx[1]+5);
                            textBox1.Text = tx[0];
                            textBox2.Text = tx[1];
                                                       
                            try
                            {
                                NetworkStream ns = localClient.GetStream();
                                // Из главного заголовка получим размер массива байтов информационного объекта
                                string header = tx[1];
                                int leninfo = int.Parse(header);

                                // Получим и десериализуем объект с подробной информацией
                                // о содержании получаемого сетевого пакета
                                MemoryStream ms = new MemoryStream(leninfo);
                                byte[] temp = new byte[leninfo];
                                int r = ns.Read(temp, 0, temp.Length);
                                ms.Write(temp, 0, r);
                                BinaryFormatter bf = new BinaryFormatter();
                                ms.Position = 0;
                                //ar = bf.Deserialize(ms);
                                ms.Close();

                                // Создадим файл на основе полученной информации и массива байтов следующих за объектом информации
                                FileStream fs = new FileStream(nam, FileMode.Create,
                                        FileAccess.ReadWrite, FileShare.ReadWrite, size);
                                do
                                {
                                    temp = new byte[size];
                                    r = ns.Read(temp, 0, temp.Length);

                                    // Записываем строго столько байтов сколько прочтено методом Read()
                                    fs.Write(temp, 0, r);

                                    // Как только получены все байты файла, останавливаем цикл,
                                    // иначе он заблокируется в ожидании новых сетевых данных
                                    if (fs.Length == size)
                                    {
                                        fs.Close();
                                        break;
                                    }
                                }
                                while (r > 0);
                            }
                            catch (Exception) { }
                      }  
                    }));
                }
            });
            thClient.Start();
            SendData(soob, GetLocDir());
        }
...
Рейтинг: 0 / 0
Некорректная передача сообщения
    #39246438
Emiliya_Emili
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
подскажите как исправить
методы GetFiles и GetDirectories кроме имени цепляют и путь мне нужно от него избавиться, склеить все имена и передать,
я смогла избавиться от пути и склеить имена но оправить уже не могу, есть ли другой способ
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
  //string hs; string poddir;
                                //string[] a = Directory.GetDirectories(strData);
                                //foreach (string s in a)
                                //{
                                //    hs = s.Substring(strData.Length, s.Length);
                                //    poddir = String.Join("/", hs);
                                //}
                                //string hj; string file;
                                //string[] k = Directory.GetFiles(strData);
                                //foreach (string s in k)
                                //{
                                //    hj = s.Substring(strData.Length, s.Length);
                                //    file = String.Join("/", hj);
                                //}

                                string poddir = String.Join("/", Directory.GetDirectories(strData));/////подправить отображение 
                                string file = String.Join("/", Directory.GetFiles(strData));/////подправить отображение
                                SendData(soob, poddir + file);
...
Рейтинг: 0 / 0
Некорректная передача сообщения
    #39246481
Фотография Cat2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
Emiliya_Emili,

Я не понимаю,зачем нужно низкоуровневое задроство с сетевыми сокетами, если в WCF все это делается в два притопа, три прихлопа
...
Рейтинг: 0 / 0
Некорректная передача сообщения
    #39246495
Emiliya_Emili
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Cat2,
потому что такое задание
...
Рейтинг: 0 / 0
Некорректная передача сообщения
    #39246538
Фотография Cat2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
Emiliya_EmiliCat2,
потому что такое задание
Курсовик, что ли?
...
Рейтинг: 0 / 0
Некорректная передача сообщения
    #39246543
Фотография Изопропил
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
buserсделайте свой протокол...
HTTP(webdav) - не подойдёт ?
...
Рейтинг: 0 / 0
Некорректная передача сообщения
    #39246643
Emiliya_Emili
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
курсач(((
и свой не могу
...
Рейтинг: 0 / 0
Некорректная передача сообщения
    #39247549
Фотография Cat2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
Emiliya_Emiliя смогла избавиться от пути и склеить имена но оправить уже не могу, есть ли другой способ
В классе System.IO.Path методы для всяких манипуляций с путями
...
Рейтинг: 0 / 0
23 сообщений из 23, страница 1 из 1
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Некорректная передача сообщения
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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