powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Java [игнор отключен] [закрыт для гостей] / передача фалов по сети
7 сообщений из 7, страница 1 из 1
передача фалов по сети
    #33777507
bemtaill
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В яве не силен, потому вопрос может и глупый, но всё же...
Сделал клиент-серверное приложение на основе сокетов. Предпологается передача клиентом файла на сервер. Делаю так: читаю из файла в массив byte, и передаю в OutputStream на сервер. С чтением из файла большого объема данных проблемм не возникает, а вот при передаче массив обрезается. Т.е. на стороне сервера я читаю весь массив byte, но больше половины в нем 0.
Как боротся?
...
Рейтинг: 0 / 0
передача фалов по сети
    #33777559
bemtaill
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В с мысле я понимаю, что можно разбивать файл перед отправкой :) . Хотелось бы узнать есть ли другие методы, возможно более правильные...
...
Рейтинг: 0 / 0
передача фалов по сети
    #33778185
bemtaill
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Продолжу сам с собой :))

Я так понимаю или вопрос слишком сложный или слишком тупой раз все молчат. На слишком сложный не похож.

Перефразирую. Каким способом перекидывать файлы по сети с помощью Socket'ов?
...
Рейтинг: 0 / 0
передача фалов по сети
    #33778244
Kudinov Anton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
На одной стороне открываешь серверный сокет на другой просто сокет и коннектишься к серверному
На сервер после того как проскакивает метод accept
Берешь InputStream и читаешь из него
или OutputStream и пишешь в него

на стороне сервера
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
ss =  new  ServerSocket( 44444 );
Socket s = ss.accept();
BufferedInputStream bis =  new  BufferedInputStream(s.getInputStream());
BufferedOutputStream bos =  new  BufferedOutputStream( new  FileOutputStream("file"));
Пишешь примерно так:
 byte [] buffer =  new   byte [ 4096 ];
 int  read = bis.read(buffer);
 while  (read !=  0 ){
    bos.write(buffer,  0 , read);
    read = bis.read(buffer);
}

bos.flush();
bos.close();
bis.close();
s.close();

на стороне клиента
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
Socket s =  new  Socket("Your host",  44444 );
BufferedInputStream bis =  new  BufferedInputStream( new  FileInputStream("file"));
BufferedOutputStream bos =  new  BufferedOutputStream(s.getOutputStream());
Пишешь примерно так:
 byte [] buffer =  new   byte [ 4096 ];
 int  read = bis.read(buffer);
 while  (read !=  0 ){
    bos.write(buffer,  0 , read);
    read = bis.read(buffer);
}

bos.flush();
bos.close();
bis.close();
s.close();


все это приблизительно пишу по памяти в среде не проверял
...
Рейтинг: 0 / 0
передача фалов по сети
    #33778380
bemtaill
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Дык так и делаю. Только buffer на стороне сервера на половину забит нулями... Хотя с клиента уходит нормально. Такое ощущение что есть какие-то ограничения на объем передаваемых данных...

PS: маленькие txt файлы передаются на ура.
...
Рейтинг: 0 / 0
передача фалов по сети
    #33778395
bemtaill
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
сорри. туплю. Не увидел цикл while...
...
Рейтинг: 0 / 0
передача фалов по сети
    #33778501
bemtaill
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
авторwhile (read != 0){

должно быть -1, а не 0. А так всё Ок. Спасибо.
...
Рейтинг: 0 / 0
7 сообщений из 7, страница 1 из 1
Форумы / Java [игнор отключен] [закрыт для гостей] / передача фалов по сети
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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