Изучаю яву уже около месяца. Решил запилить свой 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 Извините за корявый код в некоторых местах))