Форум программистов, компьютерный форум, киберфорум
Java: Сети
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.55/11: Рейтинг темы: голосов - 11, средняя оценка - 4.55
0 / 0 / 0
Регистрация: 25.05.2015
Сообщений: 3

Передача нескольких файлов по TCP

25.05.2015, 01:01. Показов 2288. Ответов 2
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Всем привет! Пишу диплом "Клиент-серверное приложение нахождения лиц". Само нахождение сделал по урокам с помощью OpenCV на Java. Захватывается видео с веб-камеры и там находит лицо. Теперь необходимо это дело передать на другой компьютер. Функции записи видео в OpenCV для Java нет, поэтому каждые 33мс я сохраняю изображения. Теперь их необходимо передать, тут и проблема. Сервер посылает выбранный файл, клиент сохраняет в выбранный файл. Передается только первое изображение, не могу понять почему?

Сервер:
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
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
import java.io.*;
import java.net.*;
 
class TCPServer {    
    static int i=0;
    public static void main(String args[]) { 
        Thread t = new Thread(new Runnable(){
            @Override            
            public void run() { 
                ServerSocket welcomeSocket = null;
                Socket connectionSocket = null;
                BufferedOutputStream outToClient = null;
                
                try {
                    InetAddress addr = InetAddress.getLocalHost();
                    System.out.println(addr);
                    welcomeSocket = new ServerSocket(8080);
                    connectionSocket = welcomeSocket.accept();
                    while(true&&i!=10){
                    try{
                        outToClient = new BufferedOutputStream(connectionSocket.getOutputStream());
                    }catch (IOException ex) {
                        // Do exception handling
                    }
                    if (outToClient != null) {                        
                            File myFile = new File("C:/Users/Elroky/workspace/FaceDetection/image/"+i+".jpg" );
                            i++;
                            byte[] mybytearray = new byte[(int) myFile.length()];
                        
                            FileInputStream fis = null;
                            try {
                                fis = new FileInputStream(myFile);
                            } catch (FileNotFoundException ex) {
                                // Do exception handling
                            }
                            BufferedInputStream bis = new BufferedInputStream(fis);
                           
                            try {
                                bis.read(mybytearray, 0, mybytearray.length);
                                outToClient.write(mybytearray, 0, mybytearray.length);
                                outToClient.flush();
                            // File sent, exit the main method
                            } catch (IOException ex) {
                                // Do exception handling
                            }
                             try{
                                Thread.sleep(500);
                            }catch(InterruptedException ex){
                                
                            }
                        
                        outToClient.close();
                        connectionSocket.close();
                    }
                }
                } catch (IOException ex) {
                    // Do exception handling
                } 
            }
        });
        t.start();
    }
}

Клиент:
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
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
import java.io.*;
import java.io.ByteArrayOutputStream;
import java.net.*;
 
class TCPClient {
    
    private final static String serverIP = "localhost";
    private final static int serverPort = 8080;
    static int i=0;
    
    public static void main(String args[]) {
        Thread t = new Thread(new Runnable(){
            @Override            
            public void run() { 
                byte[] aByte = new byte[1];
                int bytesRead;
                Socket clientSocket = null;
                InputStream is = null;
                try {
                    clientSocket = new Socket( serverIP , serverPort );
                    while(true&&i!=10){
                    is = clientSocket.getInputStream(); 
                    // while(true)
                    ByteArrayOutputStream baos = new ByteArrayOutputStream();
                    if (is != null) {
                        
                            FileOutputStream fos = null;
                            BufferedOutputStream bos = null;
                            try {
                                fos = new FileOutputStream( "D:/image/"+i+".jpg" );
                                i++;
                                bos = new BufferedOutputStream(fos);
                                bytesRead = is.read(aByte, 0, aByte.length);
                                do {
                                    baos.write(aByte);
                                    bytesRead = is.read(aByte);
                                } while (bytesRead != -1);
                                bos.write(baos.toByteArray());
                                bos.flush();
                            } catch (IOException ex) {
                                // Do exception handling
                            }
                        
                         try{
                                Thread.sleep(500);
                            }catch(InterruptedException ex){
                                
                            }
                    }
                }
                }
                catch (IOException ex) {
                    // Do exception handling
                }
            }
        }); 
        t.start();
    }
}
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
25.05.2015, 01:01
Ответы с готовыми решениями:

Передача нескольких файлов через TCP одновременно
Как передавать несколько файлов через TCP одновременно, я пока что вижу только один вариант передавать их по очереди, есть ли какой нибудь...

TCP передача файлов
Здравствуйте, разбирался в структуре и способе работы с протоколом по передачи данных TCP, сделал сервер на С++ (Linux) так же есть клиент...

Передача файлов через TCP
Пишу клиент серверное приложение. Клиент должен отправлять файлы. Сервер принимать. Использую TcpClient и NetworkStream. Сначала файл...

2
Автоматизируй это!
Эксперт Python
 Аватар для Welemir1
7390 / 4817 / 1246
Регистрация: 30.03.2015
Сообщений: 13,667
Записей в блоге: 29
25.05.2015, 17:58
1) все блоки catch закомментированы, так делать нельзя! Может тебе сервак ошибки самые разные выдает, а ты их перехватил, но не выводишь в консоль!
2) зачем усыпляешь сервак на полсекунды?
3) сколько картинок ты хотел принять, если сам же в начале цикла создаешь стрим outToClient, а при первом же срабатывании условия закрываешь его?!!! Программа конечно сыплет кучей ошибок, но ты их не видишь так как смотри пункт 1!

В код клиента пока не вникаю, но сразу вижу, что не закрываешь сокет и стрим, а надо!
0
0 / 0 / 0
Регистрация: 25.05.2015
Сообщений: 3
25.05.2015, 18:47  [ТС]
Спасибо, уже разобрался. Передаю размер и название файла, теперь все отлично.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
25.05.2015, 18:47
Помогаю со студенческими работами здесь

Передача больших файлов по TCP
Здравствуйте! При передаче небольших файлов вопросов не возникает. Теперь стала задача передать файл размером скажем 64 мБ если в send...

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

TCP сокет. Передача больших файлов
Собственно пишу курсовую работу. Что-то на подобии DROPBOX. Передача файлов шифрование и всё такое) Реализовав сокет TCP у меня...

Передача файлов через Tcp/Ip Socket
Всем привет. Как возможно передавать файлы в размерах от 200-500 мб.

Передача файлов по TCP. Интерестный вопрос
Вот такое клиент-сервер приложение: Клиент: TcpClient eclient = new TcpClient("localhost",34567); ...


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

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Обработчик клика мыши в браузере ПК и касания экрана в браузере на мобильном устройстве
8Observer8 02.02.2026
Содержание блога Для начала пошагово создадим рабочий пример для подготовки к экспериментам в браузере ПК и в браузере мобильного устройства. Потом напишем обработчик клика мыши и обработчик. . .
Философия технологии
iceja 01.02.2026
На мой взгляд у человека в технических проектах остается роль генерального директора. Все остальное нейронки делают уже лучше человека. Они не могут нести предпринимательские риски, не могут. . .
SDL3 для Web (WebAssembly): Вывод текста со шрифтом TTF с помощью SDL3_ttf
8Observer8 01.02.2026
Содержание блога В этой пошаговой инструкции создадим с нуля веб-приложение, которое выводит текст в окне браузера. Запустим на Android на локальном сервере. Загрузим Release на бесплатный. . .
SDL3 для Web (WebAssembly): Сборка C/C++ проекта из консоли
8Observer8 30.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
SDL3 для Web (WebAssembly): Установка Emscripten SDK (emsdk) и CMake для сборки C и C++ приложений в Wasm
8Observer8 30.01.2026
Содержание блога Для того чтобы скачать Emscripten SDK (emsdk) необходимо сначало скачать и уставить Git: Install for Windows. Следуйте стандартной процедуре установки Git через установщик. . . .
SDL3 для Android: Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 29.01.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами. Версия v3 была полностью переписана на Си, в. . .
Инструменты COM: Сохранение данный из VARIANT в файл и загрузка из файла в VARIANT
bedvit 28.01.2026
Сохранение базовых типов COM и массивов (одномерных или двухмерных) любой вложенности (деревья) в файл, с возможностью выбора алгоритмов сжатия и шифрования. Часть библиотеки BedvitCOM Использованы. . .
SDL3 для Android: Загрузка PNG с альфа-каналом с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 28.01.2026
Содержание блога SDL3 имеет собственные средства для загрузки и отображения PNG-файлов с альфа-каналом и базовой работы с ними. В этой инструкции используется функция SDL_LoadPNG(), которая. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru