Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Java [игнор отключен] [закрыт для гостей] / Socket: как серверу отправить картинку(1.JPG) клиенту? / 8 сообщений из 8, страница 1 из 1
26.10.2006, 14:30:31
    #34083778
Dodikus
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Socket: как серверу отправить картинку(1.JPG) клиенту?
Приветсвую всех!
Пытаюсь разбраться с механизмами сокетов - написал простенький сервер, который парсит запрос от клиента(браузера-IE) и возвращает что-то - текст, картинку(здесь проблемма).
например:
запустил сервер, набрал в IE http://localhost:8989/1.txt - сервер ищет 1.txt в своем руте, считывает по-строчно
Так вот когда файл текстовый, то все нормально, а вот когда картинка - то в браузере отображается что то похожее на первоначальный файл(1.gif), но не то. И еще - почему то только маленькие файлики(т.е. размер не очень большой) передаются (2-3 кб).
Может кто скажет где ошибка?
Код: plaintext
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.
     
    ...
    String  body = "";
    FileReader file =  null ;
     try  {
           file =  new  FileReader("1.gif");
          }  catch (FileNotFoundException e) {
                System.err.println("Could not open " );
          }
          BufferedReader br =  new  BufferedReader(file);
          String line = "";
           try  {
	    while  ((line = br.readLine())!=  null ) {
	   body += line ;
		       }
          }  catch (IOException e) {
	  System.err.println(" Error" );
          }
         String response = "HTTP/1.1 200 OK\n" 
                      + "Content-Type: image/gif\n" 
                      + "Content-Length: " + body.length() + "\n" 
                      + "\n" 
                      + body;			  
					  
        try  {
            int  length =  0 ;
           
            while  (true) {
                ...
               //считывание данных от клиента
               
               outStream = socket.getOutputStream();
               outStream.write(response.getBytes());
               outStream.flush();
           }
       }  catch  (IOException e) {
           e.printStackTrace();
       }
....
...
Рейтинг: 0 / 0
26.10.2006, 14:56:04
    #34083911
LINUXER
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Socket: как серверу отправить картинку(1.JPG) клиенту?
Dodikusв браузере отображается что то похожее на первоначальный файл(1.gif), но не то.
Так в чём отличие :O
А кто слушает этот сокет?
И вообще, кажется, для описанного случая сокет не нужен и только усложняет ситуацию.
...
Рейтинг: 0 / 0
26.10.2006, 15:08:32
    #34083981
am_sasa
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Socket: как серверу отправить картинку(1.JPG) клиенту?
изврат... но если очень хочеца, то дерзай!
замени Reader, он для текста
...
Рейтинг: 0 / 0
26.10.2006, 15:11:59
    #34083999
Dodikus
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Socket: как серверу отправить картинку(1.JPG) клиенту?
LINUXER Dodikusв браузере отображается что то похожее на первоначальный файл(1.gif), но не то.
Так в чём отличие :O
А кто слушает этот сокет?
И вообще, кажется, для описанного случая сокет не нужен и только усложняет ситуацию.
1.
Ну т.е. квадратик рисунка показывается, он заполнен разноцветными точками, которые на первоначальное изображение не похоже вообще.
2.
Это код сервера(точнее метода run,класса HttpRequestHandle, который уже работает с Socket'м - здесь парсятся входящий запрос и выдается ответ)

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
....
ServerSocket serverSocket =  null ;
        Socket socket =  null ;
         try  {
            serverSocket =  new  ServerSocket(SERVER_PORT);
            
             while  (true) {
                socket = serverSocket.accept();
                HttpRequestHandler httpRequestHandler = 
									 new  HttpRequestHandler(socket);
                Thread thread =  new  Thread(httpRequestHandler);
				thread.start(); //ЗДЕСЬ ВЫЗЫВАЕТСЯ ТО ЧТО ОПИСАНО ВЫШЕ в моем пред посте
...
...
Рейтинг: 0 / 0
26.10.2006, 15:14:12
    #34084013
Dodikus
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Socket: как серверу отправить картинку(1.JPG) клиенту?
am_sasaизврат... но если очень хочеца, то дерзай!
замени Reader, он для текста
Во, я и не знал, а на что?
...
Рейтинг: 0 / 0
26.10.2006, 17:14:41
    #34084612
LINUXER
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Socket: как серверу отправить картинку(1.JPG) клиенту?
Dodikus am_sasaизврат... но если очень хочеца, то дерзай!
замени Reader, он для текста
Во, я и не знал, а на что?
Не то чтобы для текста, но он читает символы(буферезированные),
а FileReader, InputStreamReader - байтики(бинарно)
...
Рейтинг: 0 / 0
26.10.2006, 17:34:22
    #34084711
LINUXER
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Socket: как серверу отправить картинку(1.JPG) клиенту?
LINUXERИ вообще, кажется, для описанного случая сокет не нужен и только усложняет ситуацию.
ой, для хттп-сервера конечно нужен сокети поток буферезированный
можно попробовать юзать
new DataOutputStream(connectionsocket.getOutputStream());
...
Рейтинг: 0 / 0
29.10.2006, 02:25:02
    #34089030
ddocker
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Socket: как серверу отправить картинку(1.JPG) клиенту?
Ну т.е. его проблема в том что Reader читает из gif-а не байты, а символы?
И соответственно на выходе получаем не первоначальную последовательность байтов gif-а, а покоцанную, т.к. они читались парами(символ=2байта), затем приводились к кодировке по-умалчанию и потом только выводились?
...
Рейтинг: 0 / 0
Форумы / Java [игнор отключен] [закрыт для гостей] / Socket: как серверу отправить картинку(1.JPG) клиенту? / 8 сообщений из 8, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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