服务器代码:
import java.io.IOException;
import java.io.InputStream;
import java.net.ServerSocket;
import java.net.Socket;
public class DemoSeever {
public static void main(String[] args) throws IOException {
ServerSocket server = new ServerSocket(8180);
Socket client = server.accept();
InputStream in = client.getInputStream();
int len = 0;
byte[] bytes = new byte[1024];
while ((len = in.read(bytes))!=-1){
System.out.println(new String(bytes,0,len));
}
}
}
浏览器访问:
服务器读取客户端请求
服务器根据浏览器请求的文件的路径,将文件输出给浏览器
import java.io.*;
import java.net.ServerSocket;
import java.net.Socket;
public class DemoSeever {
public static void main(String[] args) throws IOException {
ServerSocket server = new ServerSocket(8180);
while (true) {
new Thread(new Runnable() {
@Override
public void run() {
try {
Socket client = server.accept();
InputStream in = client.getInputStream();
/*int len = 0;
byte[] bytes = new byte[1024];
while ((len = in.read(bytes))!=-1){
System.out.println(new String(bytes,0,len));
}*/
//将字节流转换为字符流,调用readline方法读取第一行地址
BufferedReader buffer = new BufferedReader(new InputStreamReader(in));
String str = buffer.readLine();
//以空格为分节符,截取第一行中间地址部分
String[] strs = str.split(" ");
//将中间地址部分最前面的/去掉
String str1 = strs[1].substring(1);
//根据获取到的路径,将html文件发出
FileInputStream file = new FileInputStream(str1);
OutputStream out = client.getOutputStream();
//固定的三行,之后课程会介绍
out.write("HTTP/1.1 200 OK\r\n".getBytes());
out.write("Content‐Type:text/html\r\n".getBytes());
out.write("\r\n".getBytes());
//一读一写,将文件传送给浏览器
int len1 = 0;
byte[] bytes1 = new byte[1024];
while ((len1 = file.read(bytes1)) != -1) {
out.write(bytes1, 0, len1);
}
//记得关闭文件字节流和客户端
file.close();
client.close();
} catch (IOException e) {
e.toString();
}
}
}).start();
}
//server.close();
}
}