Форум программистов, компьютерный форум, киберфорум
Java: Сети
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.75/4: Рейтинг темы: голосов - 4, средняя оценка - 4.75
0 / 0 / 0
Регистрация: 26.11.2014
Сообщений: 3
1

HTTP сервер. Не отправляются картинки

26.11.2014, 18:58. Показов 653. Ответов 2
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Изучаю яву уже около месяца. Решил запилить свой HTTP сервер. После парочки тестов оказалось что он вовсе не отправляет или отправляет но с искажениями картинки.
Код Main.java
Java
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
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
package server;
 
import java.awt.FlowLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
 
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JScrollPane;
import javax.swing.JTextArea;
import javax.swing.JTextField;
import javax.swing.JTextPane;
 
public class Main {
    static JTextField portField;
    static JTextArea console;
    static JButton startButton;
    static JButton stopButton;
    static JFrame frm;
    
    public static void draw(){
        frm = new JFrame("Http сервер");
        frm.setLayout(new FlowLayout());
        frm.setSize(600, 400);
        frm.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        
        portField = new JTextField(5);
        
        console = new JTextArea(20,50);
        console.setLineWrap(true);
        console.setWrapStyleWord(true);
        console.setEditable(false);
        
        JScrollPane consoleSp = new JScrollPane(console); 
        consoleSp.setAutoscrolls(true);
        
        startButton = new JButton("Старт сервера");
        
        stopButton = new JButton("Остановка сервера");
        stopButton.setEnabled(false);
        
        JLabel l = new JLabel("Введите порт сервера:");
        
        startButton.addActionListener(new ActionListener(){
            public void actionPerformed(ActionEvent ae){
                new StartServer(Integer.parseInt(portField.getText()));
                startButton.setEnabled(false);
                stopButton.setEnabled(true);
            }
        });
        
        stopButton.addActionListener(new ActionListener(){
            public void actionPerformed(ActionEvent ae){
                System.exit(0);
            }
        });
        
        frm.add(l);
        frm.add(portField);
        frm.add(startButton);
        frm.add(stopButton);
        frm.add(consoleSp);
        
        frm.setVisible(true);
    }
    
    public static void main(String args[]){
        draw();
    }
}
SartServer.java
Java
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
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
package server;
 
import java.io.BufferedReader;
import java.io.Console;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.net.ServerSocket;
import java.net.Socket;
 
class StartServer implements Runnable {
    Thread t;
    int port;
    ServerSocket ss;
    
    StartServer(int portt){
        port = portt;
        
        t = new Thread(this,"server thread");
        System.out.println("Starting server thread");
        Main.console.append("Starting server thread\n");
        t.start();
    }
    
    public void run(){
        try{
            ServerSocket ss = new ServerSocket(port);
            System.out.println("Starting server on port " + ss.getLocalPort());
            Main.console.append("Starting server on port " + ss.getLocalPort() + "\n");
            while(true){
                Socket client = ss.accept();
                acceptt(client);
            }
        }
        catch(FileNotFoundException fe){
            System.err.println(fe);
            Main.console.append("<html><body<font color=#ff0000>" + fe);
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
    
    public void acceptt(Socket client){
    try{
        BufferedReader in = new BufferedReader(new InputStreamReader(client.getInputStream()));
        
        PrintWriter out = new PrintWriter(client.getOutputStream());
        
        String req = in.readLine();
        String path = req.substring(5,req.indexOf(" HTTP/1.1"));
        
        File fp;
        if(path.isEmpty()){
            fp = new File("index.html");
        }
        else{
            fp = new File(path);
        }
        
        try{
            BufferedReader src = new BufferedReader(new FileReader(fp));
            char[] data = new char[(int)fp.length()];
            src.read(data);
            
            out.println("HTTP/1.1 200 OK\n");
            out.write(data);
            out.flush();
        }
        catch(FileNotFoundException fe){
            out.println("HTTP/1.1 404 Not Found\n");
            Main.console.append("<error> " + fe);
        }
        
        System.out.println("Connection from " + client.getInetAddress() + " with " + req);
        Main.console.append("Connecting from " + client.getInetAddress() + " with " + req +"\n");
        
        out.close();
        in.close();
        client.close();
    }
    catch(Exception e){
        System.err.println(e);
        Main.console.append("<error> " + e);
    }}
    }
Помогите пожалуйста ! Уже 2 дня мучаюсь.
P.S Извините за корявый код в некоторых местах))
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
26.11.2014, 18:58
Ответы с готовыми решениями:

http server,http сервер, post
Необходимо реализовать функцию post для http сервера Косяк как принимать сообщение отправленное -...

Простой HTTP сервер
Доброго времени суток! Решил изучить Java для написания серверной части своих приложений, зашел в...

Http сервер на java
Добрый день. Есть вот такой код после исполнения которого по ссылке localhost:9091 открывается html...

Java HTTP сервер
Здравствуйте. Тема очень распространенная, и есть множество решений. Первое, это на сокетах:...

2
Эксперт Java
4093 / 3827 / 745
Регистрация: 18.05.2010
Сообщений: 9,331
Записей в блоге: 11
26.11.2014, 22:02 2
Ну так отлиживать пробовали? В acceptt хотя бы заходит выполнение?
0
0 / 0 / 0
Регистрация: 26.11.2014
Сообщений: 3
27.11.2014, 14:28  [ТС] 3
turbanoff, да в acceptt заходит выполнение. Он страницы отправляет и .bmp файлы, а картинки и файлы других форматов нет.
0
27.11.2014, 14:28
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
27.11.2014, 14:28
Помогаю со студенческими работами здесь

Данные не отправляются на сервер
Все было норм. а потом , может после какого-то изменения в ?веб конфиге? или еще где получается...

Данные не отправляются на сервер
$(document).ready(function() { $('#operation_name').fadeIn('200'); }); function new_co() ...

Как настроить SMTP сервер? Письма не отправляются..
Установил IIS 5.0 сервер, поставляемый вместе с W2k pro. Не могу отправить письмо с моего SMTP...

При первой передаче данных на сервер отправляются нулевые данные
Не могу никак реализовать конечный результат, когда нужно получить все данные после...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru