Форум программистов, компьютерный форум, киберфорум
C# .NET
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
Другие темы раздела
C# Поисково-информационная система (база с документами-текстами) Добрый день! Помогите,пожалуйста, написать прогу- информационную службу. Чтобы при вводе слова в запросе, по ключевым словам, выходил текст, где содержится это слово. (exe. на c# либо delphi) https://www.cyberforum.ru/ csharp-net/ thread564368.html C# Переместить код, взаимодействующий с формой, в dll
Здравствуйте! Есть код, где шариком можно управлять курсором и мышью, он катается по форме. Вопрос: как этот код перекинуть в dll библиотеку? Проблема к том, что весь код на этот шарик ориентирован на саму форму и её сборки System.Drawing и System.Windows.Forms. Если переместить в код библиотеки, то там сразу всё красное. Вот сам код: using System; using System.Collections.Generic; using...
C# При закрытии второй формы невозможно вызвать treeView1_AfterSelect из первой https://www.cyberforum.ru/ csharp-net/ thread564153.html
Здравствуйте уважаемые форумчане! Прошу вашей помощи, возможно вопрос покажется глупым, но я хотел бы разобраться и понять в чем суть проблемы. Ситуация следующая, есть 2 формы Form1 и Form2. На Form1 создан элемент TreeView1, работа с деревом не вызывает никаких проблем. Управление осуществляет через событие public void treeView1_AfterSelect(object sender, TreeViewEventArgs e). Проблема...
C# Заданы два каталога. Сравнить, в каком из них больше вложенных каталогов https://www.cyberforum.ru/ csharp-net/ thread564147.html
Главный поток обеспечивает реакцию формы. Вспомогательный поток запускает потоки для поиска файлов и ожидает от них результатов (использует для этого средства синхронизации). Заданы два каталога. Сравнить, в каком из них больше вложенных каталогов. Вывести всё содержимое каталогов. Выделяю адреса, загоняю в класс "поисковик", но 1) как заставить его составить список всех подкаталогов 2)...
Нужно, чтобы программа восстанавливала график по ломанной, которую задаем на входе C#
программа по интерполяции методом ньютона, может кто делал? нужно чтобы программа восстанавливала график по ломанной, которую задаем на входе?
C# Клиент-серверное приложение: как написать реакцию сервера на каждое сообщение от клиента В общем пытаюсь разобраться с сетью в C#, условная задача написать сервер - который осуществляет обмен, и клиент - 2 запущенных клиента обмениваются сообщениями. Вот наброски сервера (пока под одного клиента) //сервер int port = 12345; IPAddress ip= IPAddress.Parse("127.0.0.1"); TcpListener server = new TcpListener(localAddr,port); server .Start(); Console.WriteLine("The server is... https://www.cyberforum.ru/ csharp-net/ thread564082.html
C# Reflection, dynamic: как подменить объект новым объектом https://www.cyberforum.ru/ csharp-net/ thread564053.html
Здравствуйте есть на входе объект, в нем много методов, полей свойств и тд. Этот объект получаю в callback-е, и поюзать его можно только рефлектором. Публичные свойства этого объекта имеют только getter-ы. Как бы мне подменить его новым объектом (один в один по содержанию), но 1) записать во все readonly свойтва string-овое значение 2) все его property, что не равны типу System.String...
Передача изображения по LAN C#
Привет всем. Обращаюсь за консультацией, помогите чем можете))) Нужно передать файл в локальной сети. Нашел код, но сервер почему - то принимает (сохраняет) некорректно... Пример внизу. Код сервера: class FTServerCode { IPEndPoint ipEnd; Socket sock;
C# Создание цикла для внесения списка в Exсel Нужно сделать цикл в коде помеченным красным цветом(оно помечено в коде )! Пользователь должен сам ввести кол-во студентов, которых он он будет забивать в таблицу. А нумероваться студенты должны в цикле автоматически от 1 до кол-во, которое вбил пользователь using System; using System.Collections.Generic; using System.Linq; //Соединяем с Excel и Word через ссылки using Excel =... https://www.cyberforum.ru/ csharp-net/ thread563894.html C# Передавать числовые данные между двумя разными процессами https://www.cyberforum.ru/ csharp-net/ thread563707.html
Добрый день! Требуется передавать числовые данные ( несколько массивов типа double ) между двумя разными процессами. Один процесс генерирует эти данные и один раз в определенный промежуток времени передает их в другой процесс. Оба процесса выполняются на одной машине. Как я понял самым простым решением будет использовать именованные каналы. Попробовал реализовать это с помощью таймеров (...
Поиск всех .JPЕG на ПК C#
Подскажите как найти все файлы формата .JPЕG ?
C# Как сделать пучок из линий https://www.cyberforum.ru/ csharp-net/ thread563511.html
Дело такое. Форма 800х800, фиксированный размер, начальная позиция формы 0х0 - верхний левый угол экрана. Координаты мыши работают не совсем корректно, поэтому установил такую начальную позицию. После нажатия левой кнопки мыши должно произойти следующее - из той точки, где было нажатие на кнопку мыши, нарисовать, например, 20 линий в разном направлении. Я пока сделал таким образом...
352 / 331 / 49
Регистрация: 12.12.2011
Сообщений: 563
05.05.2012, 06:00  [ТС] 0

Сокеты: как передавать большие файлы - C# - Ответ 2991776

05.05.2012, 06:00. Показов 10195. Ответов 16
Метки (Все метки)

Ответ

Долго же я конечно разбирался, но вот что получилось
Сервер
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
class Server
    {
        private TcpListener listener { get; set; }
        private NetworkStream stream { get; set; }
 
        public Server()
        {
            listener = new TcpListener(IPAddress.Parse("127.0.0.1"), 1488);
            listener.Start();
            new Thread(ListenForClients).Start();
        }
 
        private void ListenForClients()
        {
            while (true)
            {
                TcpClient client = this.listener.AcceptTcpClient();
                new Thread(HandleClient).Start(client);
            }
        }
 
        private void HandleClient(object tcpClient)
        {
            TcpClient client = (TcpClient)tcpClient;
            while (client.Connected)
            {
                Recieve(client);
            }
        }
 
        private void Recieve(TcpClient client)
        {
            byte[] buffer = new byte[client.ReceiveBufferSize];
            try
            {
                stream = client.GetStream();
                int bytesRead = stream.Read(buffer, 0, 12);
                if(bytesRead == 0) return;
 
                ushort id = BitConverter.ToUInt16(buffer, 0);
                long len = BitConverter.ToInt64(buffer, 2);
                ushort nameLen = BitConverter.ToUInt16(buffer, 10);
                stream.Read(buffer, 0, nameLen);
                string fileName = Encoding.UTF8.GetString(buffer, 0, nameLen);
 
                if (id == 1)
                {
                    using (BinaryWriter writer = new BinaryWriter(new FileStream(fileName, FileMode.Create)))
                    {
                        int recieved = 0;
                        while (recieved < len)
                        {
                            bytesRead = stream.Read(buffer, 0, client.ReceiveBufferSize);
                            recieved += bytesRead;
                            writer.Write(buffer, 0, bytesRead);
                            Console.WriteLine("{0} bytes recieved.", recieved);
                        }
                    }
                    Console.WriteLine("File length: {0}", len);
                    Console.WriteLine("File Name: {0}", fileName);
                    Console.WriteLine("Recieved!");
                }
                else
                {
                    Console.WriteLine(fileName);
                }
            }
            catch (Exception)
            {
                stream.Close();
                client.Close();
            }
            finally
            {
                stream.Flush();
            }
        }
    }

Клиент
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
internal class Program
    {
        private static TcpClient client;
        private static NetworkStream stream;
        private static void Main(string[] args)
        {
            string temp;
            client = new TcpClient("localhost", 1488);
            stream = client.GetStream();
            Console.WriteLine(client.SendBufferSize);
 
            while ((temp = Console.ReadLine()) != "exit")
            {
                Send(temp);
            }
 
            SendFile(new FileInfo(@"File_path"));
            Console.ReadKey(true);
        }
 
        public static void SendFile(FileInfo file)
        {
            byte[] id = BitConverter.GetBytes((ushort)1);
            byte[] size = BitConverter.GetBytes(file.Length);
            byte[] fileName = Encoding.UTF8.GetBytes(file.Name);
            byte[] fileNameLength = BitConverter.GetBytes((ushort)fileName.Length);
            byte[] fileInfo = new byte[12 + fileName.Length];
 
            id.CopyTo(fileInfo, 0);
            size.CopyTo(fileInfo, 2);
            fileNameLength.CopyTo(fileInfo, 10);
            fileName.CopyTo(fileInfo, 12);
 
            stream.Write(fileInfo, 0, fileInfo.Length); //Размер файла, имя
 
            byte[] buffer = new byte[1024 * 32];
            int count;
 
            long sended = 0;
 
            using (FileStream fileStream = new FileStream(file.FullName, FileMode.Open))
                while ((count = fileStream.Read(buffer, 0, buffer.Length)) > 0)
                {
                    stream.Write(buffer, 0, count);
                    sended += count;
                    Console.WriteLine("{0} bytes sended.", sended);
                }
            stream.Flush();
        }
 
        
        private static void Send(string message)
        {
            byte[] id = BitConverter.GetBytes((ushort)0);
            byte[] msg = Encoding.UTF8.GetBytes(message);
            byte[] msgLength = BitConverter.GetBytes((ushort)msg.Length);
            byte[] fileInfo = new byte[12 + msg.Length];
 
            id.CopyTo(fileInfo, 0);
            msgLength.CopyTo(fileInfo, 10);
            msg.CopyTo(fileInfo, 12);
 
            stream.Write(fileInfo, 0, fileInfo.Length);
            stream.Flush();
        }
    }

Файл 650мб передает без ошибок, файлы большего размера еще не пробовал

Вернуться к обсуждению:
Сокеты: как передавать большие файлы C#
4
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
05.05.2012, 06:00
Готовые ответы и решения:

Как отправлять большие файлы по UDP
Помогите модифицировать код, чтобы он передавал большие файлы, готов даже заплатить, срочно...

Как передать по UDP большие файлы
Сабж... Интересует предача файлов размером до 4 мб.

Как загрузить на сервер большие файлы.
Подскажите средства для загрузки на сервер больших файлов (~10M).

Целесообразно ли передавать большие массивы как параметры в метод?
В классе есть метод и несколько массивов, с которыми метод выполняет операции. Для разных случаев -...

16
05.05.2012, 06:00
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
05.05.2012, 06:00
Помогаю со студенческими работами здесь

Как передавать картинку через сокеты?
Как передавать картинку через сокеты?

Нужно передавать большие объёмы текстов
всем привет. Такая проблемка вылезла. Мне нужно передавать большие объёмы текстов через &lt;Input ...

Как передавать файлы по Wi-Fi сети?
Суть: есть wifi сеть через роутер tp-link; на роутере dhcp; в сети есть 5 ноутбуков; 4 под windows...

Как передавать файлы по wifi с Ноута на ноут
как передавать файлы по wifi с Ноута на ноут) Оба Win 7, модели ноутов ASer 5750G))

0
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru