Модераторы: LSD, AntonSaburov
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> HTTPSERVER 
V
    Опции темы
Tony
Дата 18.8.2006, 10:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1159
Регистрация: 3.3.2006
Где: Riga

Репутация: 1
Всего: 12



Когда то давно писал http сервер.Но мучает одна проблема.
Код

public void run(){        
        try{    
            sock.setTcpNoDelay(true);
            DataInput d=new DataInputStream(sock.getInputStream());
            String method= d.readLine().trim(); //naprimer zapros: GET /index.html HTTP/1.1
            System.out.println(method);
            String request;
            if (method.indexOf("GET /")==0){//proverjaem esli poslan get esli net to otklu4aem usera
                //esli pusto visilaem sartovuju stranicu    
                if (method.equals("GET / HTTP/1.1")==false){
                    request=method.substring(5,method.length()-9);
                }
                else{
                    request=Config.getPage();
                }
                File f=new File("crash/root/"+request);
                PrintWriter o=new PrintWriter (sock.getOutputStream(),true);
if (f.exists()){
                    request=request.substring(request.length()-4,request.length());//izimem tip dannih
                    String mime="text/html";//mime po umol4aniju
... выставление миме
        FileChannel in=new FileInputStream(f).getChannel();

                    o.println("HTTP/1.0 200 OK");
                    o.println("Content-Type: "+mime);
                    o.println("Content-Length: "+f.length());
                    o.println();
                    o.flush();
                    
                    WritableByteChannel out=Channels.newChannel(sock.getOutputStream());
                    in.transferTo(0,in.size(), out);
        
                    out.close();
                    in.close();
                                    
                    sleep(700);

                }else{
                    Error.error(sock,404,request+" not found ","not found");
                    sock.close();
                }


Проблема в том что фаилы размером от 100kb до 2 MB могут браузером не восприниматься.Он их просто игнарирует.Например картинка может 4асти4но загрузиться(например половина изображения).Эту проблему частично решает sleep(700);, no не всегда.Как избавиться от этого? smile 


--------------------
user posted image
user posted image
PM MAIL Skype   Вверх
Tony
Дата 7.9.2006, 08:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1159
Регистрация: 3.3.2006
Где: Riga

Репутация: 1
Всего: 12



Хей-хей-хей!!!!! ВОпрос в правелной переда4и фаила клиенту.Т.к сервер быстро пререка4ивает фаил.Клиент ловит не доканца т.к сервер передал всё и соединение закривается.Решение проблемы sleep(100) ,не всегда спосает.ДАи ждать приходится. smile 


--------------------
user posted image
user posted image
PM MAIL Skype   Вверх
tux
Дата 7.9.2006, 09:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Летатель
***


Профиль
Группа: Участник Клуба
Сообщений: 1853
Регистрация: 10.2.2005
Где: msk.ru

Репутация: 5
Всего: 132



Tony, а ты не пробовал посмотреть в код существующих веб-серверов на Java, как там реализовано? Вот здесь есть совсем маленькие, думаю не сложно разобраться - http://java-source.net/open-source/web-servers.
PM MAIL Skype GTalk Jabber YIM   Вверх
Tony
Дата 7.9.2006, 20:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1159
Регистрация: 3.3.2006
Где: Riga

Репутация: 1
Всего: 12



Да я пробивал Tomcat ,no ты понал 4ем это закон4илось.


--------------------
user posted image
user posted image
PM MAIL Skype   Вверх
Tony
Дата 7.9.2006, 20:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1159
Регистрация: 3.3.2006
Где: Riga

Репутация: 1
Всего: 12



Нашёл barehttp-1.0.0. Смотрю его.


--------------------
user posted image
user posted image
PM MAIL Skype   Вверх
Tony
Дата 7.9.2006, 22:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1159
Регистрация: 3.3.2006
Где: Riga

Репутация: 1
Всего: 12



написал.ОФФ.



--------------------
user posted image
user posted image
PM MAIL Skype   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Java"
LSD   AntonSaburov
powerOn   tux
  • Прежде, чем задать вопрос, прочтите это!
  • Книги по Java собираются здесь.
  • Документация и ресурсы по Java находятся здесь.
  • Используйте теги [code=java][/code] для подсветки кода. Используйтe чекбокс "транслит", если у Вас нет русских шрифтов.
  • Помечайте свой вопрос как решённый, если на него получен ответ. Ссылка "Пометить как решённый" находится над первым постом.
  • Действия модераторов можно обсудить здесь.
  • FAQ раздела лежит здесь.

Если Вам помогли, и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, LSD, AntonSaburov, powerOn, tux.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Java: Работа с сетью | Следующая тема »


 




[ Время генерации скрипта: 0.0470 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.