powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Java [игнор отключен] [закрыт для гостей] / Socket: как серверу отправить картинку(1.JPG) клиенту?
8 сообщений из 8, страница 1 из 1
Socket: как серверу отправить картинку(1.JPG) клиенту?
    #34083778
Dodikus
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Приветсвую всех!
Пытаюсь разбраться с механизмами сокетов - написал простенький сервер, который парсит запрос от клиента(браузера-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
Socket: как серверу отправить картинку(1.JPG) клиенту?
    #34083911
LINUXER
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dodikusв браузере отображается что то похожее на первоначальный файл(1.gif), но не то.
Так в чём отличие :O
А кто слушает этот сокет?
И вообще, кажется, для описанного случая сокет не нужен и только усложняет ситуацию.
...
Рейтинг: 0 / 0
Socket: как серверу отправить картинку(1.JPG) клиенту?
    #34083981
am_sasa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
изврат... но если очень хочеца, то дерзай!
замени Reader, он для текста
...
Рейтинг: 0 / 0
Socket: как серверу отправить картинку(1.JPG) клиенту?
    #34083999
Dodikus
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
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
Socket: как серверу отправить картинку(1.JPG) клиенту?
    #34084013
Dodikus
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
am_sasaизврат... но если очень хочеца, то дерзай!
замени Reader, он для текста
Во, я и не знал, а на что?
...
Рейтинг: 0 / 0
Socket: как серверу отправить картинку(1.JPG) клиенту?
    #34084612
LINUXER
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dodikus am_sasaизврат... но если очень хочеца, то дерзай!
замени Reader, он для текста
Во, я и не знал, а на что?
Не то чтобы для текста, но он читает символы(буферезированные),
а FileReader, InputStreamReader - байтики(бинарно)
...
Рейтинг: 0 / 0
Socket: как серверу отправить картинку(1.JPG) клиенту?
    #34084711
LINUXER
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
LINUXERИ вообще, кажется, для описанного случая сокет не нужен и только усложняет ситуацию.
ой, для хттп-сервера конечно нужен сокети поток буферезированный
можно попробовать юзать
new DataOutputStream(connectionsocket.getOutputStream());
...
Рейтинг: 0 / 0
Socket: как серверу отправить картинку(1.JPG) клиенту?
    #34089030
ddocker
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ну т.е. его проблема в том что Reader читает из gif-а не байты, а символы?
И соответственно на выходе получаем не первоначальную последовательность байтов gif-а, а покоцанную, т.к. они читались парами(символ=2байта), затем приводились к кодировке по-умалчанию и потом только выводились?
...
Рейтинг: 0 / 0
8 сообщений из 8, страница 1 из 1
Форумы / Java [игнор отключен] [закрыт для гостей] / Socket: как серверу отправить картинку(1.JPG) клиенту?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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