Форум программистов, компьютерный форум, киберфорум
Java SE (J2SE)
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
5 / 5 / 0
Регистрация: 09.04.2011
Сообщений: 66

проблема с реализацией потоков

14.04.2012, 14:01. Показов 807. Ответов 0
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Добрый день!
Решил опробовать потоки и что-то у меня не получается
Описание: с помощью сокетов пытаюсь передать файл с одной машины на другую. Есть 2 приложения: сервер и клиент

сервер (часть, которая отвечает за скачивание файла. Скачивается, пока от клиента не придет сообщение "done!") :
Java
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
line = in.readUTF();
             System.out.println(line);
             
             if (line.equals("ready to upload, get command (do)")){
                 command = input.nextLine();
                 out.writeUTF(command);
                 out.flush();
                 while (!line.equals("done!")){
                     
                     try{
                 
                         line = in.readUTF(); //здесь line должна содержать название файла или сообщение "done!"
                     
                         System.out.println (line);
                 
                         File file = new File ("D:\\"+line);
                         if (!file.exists()){
                             file.createNewFile();
                         }
                         BufferedOutputStream bos = new BufferedOutputStream(new FileOutputStream(file));
                         byte[] byteArray = new byte[8192];
                         int inputDate;
                         while ((inputDate = sin.read(byteArray)) != -1){ // InputStream sin = socket.getInputStream();  - было объявлено
                             bos.write(byteArray,0,inputDate); //в этом месте происходит зацикливание. т.е. 1 файл из нескольких передается
                         }
                         System.out.println("File was uploaded");
                         bos.close();
                     }
                     catch (Exception e){
                         System.out.println (e);
                     }
                 }
             }
соответствующая часть в клиенте:

Java
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
command = in.readUTF();
                System.out.println(command);
                
                if (command.equals("copy")){
                    out.writeUTF("ready to upload, get command (do)");
                    out.flush();
                    
                    command = in.readUTF();
                    System.out.println(command);
                    
                    if (command.equals("do")){
                        for (int i = 0;i<sc.getHistories().size();i++){
                            
                            File f = new File ((String) sc.getHistories().get(i));
                            for (int j = 0;j<f.list().length;j++){
                                try{
                                    System.out.println(f.list()[j]);
                                    out.writeUTF(f.list()[j]); // передача названия файла
                                    out.flush();
                                    byte[] byteArray = new byte[8192];
                                    int inputDate=0;
                                    while ((inputDate = sin.read(byteArray)) != -1){ //InputStream sin = socket.getInputStream();
                                        sout.write(byteArray,0,inputDate); //аналогично, зацикливание в этом месте; OutputStream sout = socket.getOutputStream();
                                    }               
                                    System.out.println("File was downloaded");
                                }
                                catch (Exception e){
                                    System.out.println (e);
                                }
                            }
                        }
                    }
                    
                }
вроде все изложил...объясните пожалуйста, почему зацикливание происходит и как в таком случает правильно передавать файл?

спасибо
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
14.04.2012, 14:01
Ответы с готовыми решениями:

Проверка текстовых полей на наличие натуральных чисел, проблема с реализацией
Доброго времени суток! Прошу помочь. Имеется условие: Написать программу, содержащую описание окна, построенного в качестве...

Проблема с пулом потоков
Добрый день, Есть массив из 100 элементов, заполненный рандомными числами от 0 до 10000; int n = new int; Надо создать пул из 5...

Проблема с обновлением числа и работой потоков
Задача: Есть рудник и рабочие. За секунду 1 рабочий добывает 3 золота и кладет в вагонетку. Она в течении 5 секунд перевозит это к другому...

0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
14.04.2012, 14:01
Помогаю со студенческими работами здесь

Проблема с реализацией
Доброе! такая вот реализация: открываю документ (Maindoc) создаю из него респонс, при сохранении респонса в главном документе меняется...

Синхронизация потоков: проблема гонки потоков
Есть проблема в синхронизации потоков, которую я не знаю, как решить. Точнее у меня получается типичная гонка потоков. Есть функция,...

Проблема с реализацией программы
как в кнопку (Button1 например) вставить код: template&lt;class T&gt; void quickSortR(T* a, long N) { // На входе - массив a, a - его...

Проблема с реализацией запроса
Здравствуйте, с недавних времён осваиваю билдер, и в последнее время стали возникать проблемы. Имеются 3 таблицы, связанные с помощью...

Проблема с реализацией класса и списка c++
Приветствую! Задали сделать класс продукта (название, стоимость, магазин где продается) . Также необходимо сделать отсортированный по...


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

Или воспользуйтесь поиском по форуму:
1
Ответ Создать тему
Новые блоги и статьи
1С: Контроль уникальности заводского номера
Maks 23.03.2026
Алгоритм контроля уникальности заводского (или серийного) номера на примере документа выдачи шин для спецтехники с табличной частью. Данные берутся из регистра сведений, по которому настроено. . .
Хочу заставить корпорации вкладываться в здоровье сотрудников: делаю мат модель здравосохранения
anaschu 22.03.2026
e7EYtONaj8Y Z4Tv2zpXVVo https:/ / github. com/ shumilovas/ med2. git
1С: Программный отбор элементов справочника по группе
Maks 22.03.2026
Установка программного отбора элементов справочника "Номенклатура" из модуля формы документа. В качестве фильтра для отбора справочника служит группа номенклатуры. Отбор по наименованию группы. . .
Как я обхитрил таблицу Word
Alexander-7 21.03.2026
Когда мигает курсор у внешнего края таблицы, и нам надо перейти на новую строку, а при нажатии Enter создается новый ряд таблицы с ячейками, то мы вместо нервных нажатий Энтеров мы пишем любые буквы. . .
Krabik - рыболовный бот для WoW 3.3.5a
AmbA 21.03.2026
без регистрации и смс. Это не торговля, приложение не содержит рекламы. Выполняет свою непосредственную задачу - автоматизацию рыбалки в WoW - и ничего более. Однако если админы будут против -. . .
1С: Программный отбор элементов справочника по значению перечисления
Maks 21.03.2026
Установка программного отбора элементов справочника "Сотрудники" из модуля формы документа. В качестве фильтра для отбора служит значение перечислений. / / Событие "НачалоВыбора" реквизита на форме. . .
Переходник USB-CAN-GPIO
Eddy_Em 20.03.2026
Достаточно давно на работе возникла необходимость в переходнике CAN-USB с гальваноразвязкой, оный и был разработан. Однако, все меня терзала совесть, что аж 48-ногий МК используется так тупо: просто. . .
Оттенки серого
Argus19 18.03.2026
Оттенки серого Нашёл в интернете 3 прекрасных модуля: Модуль класса открытия диалога открытия/ сохранения файла на Win32 API; Модуль класса быстрого перекодирования цветного изображения в оттенки. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru