Передача файлов по сети (Java)
Добрый день! Пишу две программки (клиент и серверок на языке Java), одной из функций которых является передача файлов (от клиента к серверу). Читаю файл клиентом в переменную типа char и передаю его методом write(), который является методом класса BufferedWriter. Читаю из потока функцией read(), класса BufferedReader.
Проблема состоит в том, что когда я считываю 255 байт, передаю их по сети, выводимые в файл данные весят 270 байт. Откудато берутся 15 лишних байт. В начале файла появляется знак ?, в конце 14 символов форматирования (блокнот их отображает как пробелы). Выводя данные в файл, я указываю, что записываю 255 байт, но толку от этого нет. Фрагмент кода клиента: Код:
... Код:
... |
Описанная выше проблема была решена путём по байтной передаче файла.
Возник ёще один вопросик. Может ли для одного процесса (приложения) быть открыто несколько портов. Как я понимаю, порт (в данном случае) - это идентификатор процесса. Значит не может? Но очень надо. |
Добрый, день! Вопрос по поводу тех же сервера и клиента.
Клиент выполняет отправку файлов по сети по протоколу TCP. Сервер принимает эти файлики и выполняет дальнейшие действия. Проблемка состоит в том, что если клиент пытается передать весь файл сразу, то у сервера выскакивает исключение... файлик не передаётся... Поборол проблему установив размер передаваемого пакета в 1024 байт. То есть, клиент разбивает файл на пакеты размером 1024 байта или меньше. Передаёт первый пакет, ждёт ответа сервера, передаёт второй пакет и т.д. Проблема состоит в том, что чем меньше размер пакета, тем ниже скорость передачи. Та скорость, что получается при размере пакета 1024 байт явно меньше той, с которой передаются файлики при использовании стандартных средств Windows. Хотелось бы разобраться.... что же происходит? И найти решение как оптимизировать программки. Прошу помощи :) |
Время: 23:44. |
Время: 23:44.
© OSzone.net 2001-