powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Java [игнор отключен] [закрыт для гостей] / Передача нескольких файлов по сети
8 сообщений из 8, страница 1 из 1
Передача нескольких файлов по сети
    #38424431
apprentice-novice
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Прога работает и передает фал когда он в одном экземпляре, но как только файлов становится несколько возникает проблема. Ругается в момент передачи размера второго файла. Кто сталкивался с подобным подскажите пожалуйсто.
сервер

try
{
ss=new ServerSocket(9002);

while(true){
socket=ss.accept();
//outS = new PrintWriter(socket.getOutputStream(),true);
din=new DataInputStream(socket.getInputStream());
int filesCount=din.readInt();
area.setText("Передается " + filesCount + " файлов\n");
System.out.println("Передается " + filesCount + " файлов\n");
for (int i =0; i<filesCount; i++){
ei=i;

System.out.println("Ожидание получения размера файла");
fileS=din.readLong();
System.out.println("Ожидание получения имени файла");
fIn=din.readUTF();

System.out.println("Пытаюсь скопировать файл "+fIn+" размер - "+fileS);
fout=new FileOutputStream("D:/dst/"+fIn);
byte[] buffer = new byte[64*1024];
int count, total=0;

while((count = din.read(buffer)) != -1){
total += count;
fout.write(buffer, 0, count);

if(total == fileS){
System.out.println("Копирование файла завершено");

break;
}
}
outS = new PrintWriter(socket.getOutputStream(),true);
outS.write("Server get file "+fIn);
outS.close();
fout.close();
}
din.close();

}

}catch(IOException e){System.out.println("Ошибка работы итерация "+ei);}

}

Клиент

int count=vec.size();

try
{

out = new DataOutputStream(socket.getOutputStream());
out.writeInt(count);
}catch(IOException e){};
String comp=null;
for (int i=0; i<vec.size(); i++){

System.out.println("Пердаю "+i+"-й файл "+vec.get(i).getName());
try
{

System.out.println("FILESIZE "+vec.get(i).length()+" FILENAME "+vec.get(i).getName());
int w=0;

out.writeLong(vec.get(i).length());
out.writeUTF(vec.get(i).getName());

}catch(IOException e){System.out.println("ERROR - Не могу передать размер и имя файла");}
try
{
File f = vec.get(i);
FileInputStream in = new FileInputStream(f);
byte [] buffer = new byte[64*1024];
int counter;

while((counter = in.read(buffer)) != -1){
out.write(buffer, 0, counter);
}
out.flush();
in.close();

//out.close();

BufferedReader inS = new BufferedReader(new InputStreamReader(socket.getInputStream()));
int w=0;

while(!(comp=inS.readLine()).equals("Server get file "+vec.get(i).getName())){
System.out.println(w++);
}
inS.close();

}catch(IOException e){System.out.println("ERROR - Не могу передать файл");}
System.out.println(comp);

}
}

Извиняюсь за внешний вид но теги почему то не работают.
...
Рейтинг: 0 / 0
Передача нескольких файлов по сети
    #38424456
cdtyjv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Хотите получить ответ - оформите нормально код (у всех тэги работают, а у вас нет? :)) и покажите, какая ошибка вылезает.
...
Рейтинг: 0 / 0
Передача нескольких файлов по сети
    #38424457
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
cdtyjvХотите получить ответ - оформите нормально код (у всех тэги работают, а у вас нет? :)) и покажите, какая ошибка вылезает.
У меня теги не работают (кнопка). Приходится руками набирать. Нубы тем более не знают как.
...
Рейтинг: 0 / 0
Передача нескольких файлов по сети
    #38424483
apprentice-novice
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Ошибка вот. Но сокет нигде не закрывал

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
java.net.SocketException: Socket closed
	at java.net.SocketOutputStream.socketWrite(SocketOutputStream.java:116)
	at java.net.SocketOutputStream.write(SocketOutputStream.java:153)
	at java.io.DataOutputStream.writeLong(DataOutputStream.java:224)
	at clientcopyfile.ClientCopyFile.jButton1ActionPerformed(ClientCopyFile.java:116)
	at clientcopyfile.ClientCopyFile.access$000(ClientCopyFile.java:19)
	at clientcopyfile.ClientCopyFile$1.actionPerformed(ClientCopyFile.java:69)
	at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:2018)
	at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2341)[]



P.S. ну раз руками то руками
...
Рейтинг: 0 / 0
Передача нескольких файлов по сети
    #38424487
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вероятно вы всё позакрывали после передачи файла. Вот второй файл в тот же сокет и не пролазит.
...
Рейтинг: 0 / 0
Передача нескольких файлов по сети
    #38424503
apprentice-novice
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Например где?
Код: sql
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.
int count=vec.size();

    try
       {
       
        out = new DataOutputStream(socket.getOutputStream());
        out.writeInt(count);
    }catch(IOException e){};
    String comp=null;
    for (int i=0; i<vec.size(); i++){
        
        System.out.println("Пердаю "+i+"-й файл "+vec.get(i).getName());
        try
            {           
         
            System.out.println("FILESIZE "+vec.get(i).length()+" FILENAME "+vec.get(i).getName());
            int w=0;
        
        out.writeLong(vec.get(i).length());
        out.writeUTF(vec.get(i).getName());  
        
        }catch(IOException e){System.out.println("ERROR - Не могу передать размер и имя файла"); e.printStackTrace();}
        try
        {
        File f = vec.get(i);
         FileInputStream in = new FileInputStream(f);
                byte [] buffer = new byte[64*1024];
                int counter;
                
                while((counter = in.read(buffer)) != -1){
                    out.write(buffer, 0, counter);
                }
                out.flush();
                in.close();
                
                //out.close();
                
        BufferedReader inS  = new BufferedReader(new InputStreamReader(socket.getInputStream()));
        int w=0;
        
        while(!(comp=inS.readLine()).equals("Server get file "+vec.get(i).getName())){
           System.out.println(w++);
        }       
        inS.close();
        
        }catch(IOException e){System.out.println("ERROR - Не могу передать файл");}
        System.out.println(comp);
        
    }        
    }
...
Рейтинг: 0 / 0
Передача нескольких файлов по сети
    #38424514
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: java
1.
2.
BufferedReader inS  = new BufferedReader(new InputStreamReader(socket.getInputStream()));
inS.close();


BufferedReader.close() -> InputStreamReader.close() -> SocketInputStream.close() -> Socket.close()
...
Рейтинг: 0 / 0
Передача нескольких файлов по сети
    #38424526
apprentice-novice
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
мда тупанул
...
Рейтинг: 0 / 0
8 сообщений из 8, страница 1 из 1
Форумы / Java [игнор отключен] [закрыт для гостей] / Передача нескольких файлов по сети
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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