![]() |
Модераторы: LSD, AntonSaburov |
![]() ![]() ![]() |
|
Proger10 |
|
||||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 312 Регистрация: 16.12.2008 Репутация: нет Всего: нет |
Передаю файл с сервера на клиент. Вот сервер:
вот клиент:
Вот так файл передаётся успешно, но после него закрывается сокет и более работа в него не возможна. А надо бы ![]() То ли это я сокеты закрываю вот этими строками в конце: os.close(); is.close(); Или эти строки сам сокет не должны закрывать? Просто проблема в том, что если эти строки убрать, то сокет не закрывается.. хм.. но и файл почему-то не передаётся ![]() А почему? Flush есть.. по идее должен ведь уходить клиенту.. В чём моя ошибка? Это сообщение отредактировал(а) Proger10 - 22.3.2009, 23:49 |
||||
|
|||||
codegen |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 2 Регистрация: 22.3.2009 Репутация: нет Всего: нет |
есть функция которая закрывает ввод
public void shutdownInput() throws IOException Places the input stream for this socket at "end of stream". Any data sent to the input stream side of the socket is acknowledged and then silently discarded. If you read from a socket input stream after invoking shutdownInput() on the socket, the stream will return EOF. зачем тебе закрывать поток,если ты еще хочешь читать??? можно просто закрыть файл out.close(); а входной поток не закрывать. но если на то пошло попробуй так: out.close(); socket.shutdownInput(); Добавлено через 5 минут рекомендую не парится и удалить строку is.close(); |
|||
|
||||
Kangaroo |
|
||||||
![]() AA - Aussie Animal ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 2042 Регистрация: 7.10.2006 Где: US Репутация: 2 Всего: 104 |
Учись читать ДжаваДоки:
Попробуй на файле флаш сделать. -------------------- Lost.... |
||||||
|
|||||||
Proger10 |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 312 Регистрация: 16.12.2008 Репутация: нет Всего: нет |
А с os.close(); что делать?
Если её закомментить (чтобы связь не рвать, мне работать ещё далее в обе стороны нужно..), тогда завершение приёма у клиента никогда не наступает. Если оставить - то файл приходит отлично! Но с сервера бьётся коннект до сервера. Причём в обратную сторону связь успешно держится! ![]() Но далее у меня срабатывает реконнект (это моя фича ![]() А вот нельзя ли как и с севером что-то сделать? Закомментил os.close() и поставил с радости os.shutdownOutput() но не сработало ![]() Добавлено @ 01:25 Kangaroo Не понял про файл.. fis.flush()? походу он не поймёт о чём это мы: ![]()
Похоже нужно как-то EOF послать с сервера клиенту... Потому как клиент зависает на получении файла, но как только закрываешь прогу-сервер - так сразу он и получает файл ![]() Поэтому os.close() на сервере и срабатывает, но как объяснил уже Kangaroo, закрывается не только поток, но и ассоциированный с ним сокет. Это сообщение отредактировал(а) Proger10 - 23.3.2009, 01:29 |
|||
|
||||
Proger10 |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 312 Регистрация: 16.12.2008 Репутация: нет Всего: нет |
Как бы мне так послать с сервера EOF, чтобы сокет не закрывать у себя?
![]() Кстати, а socket.shutdownInput() также закрывает сокет с предварительным EOF? Что-то у меня он не посылает EOF клиенту.. Это сообщение отредактировал(а) Proger10 - 23.3.2009, 01:37 |
|||
|
||||
Proger10 |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 312 Регистрация: 16.12.2008 Репутация: нет Всего: нет |
Походу тема зашла в тупик
![]() ![]() Говорят, чтобы либо отдельный сокет открывал на передачу файла, либо предварительно просто размер файла слал и ждал это кол-во байтов. Так и сделаю! |
|||
|
||||
Kangaroo |
|
|||
![]() AA - Aussie Animal ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 2042 Регистрация: 7.10.2006 Где: US Репутация: 2 Всего: 104 |
Ну, я про аут говорил ![]() -------------------- Lost.... |
|||
|
||||
![]() ![]() ![]() |
Правила форума "Java" | |
|
Если Вам помогли, и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, LSD, AntonSaburov, powerOn, tux. |
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Java: Работа с сетью | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |