代码示例:
import java.io.*; import java.net.ServerSocket; import java.net.Socket; public class Demo { public static void main(String[] args) throws IOException { //创建serversocket对象 ServerSocket server = new ServerSocket(28888); //死循环多线程运行,等待客户端接入 while (true) { Socket socket = server.accept(); new Thread(){ public void run() { try {//创建输入流,读取客户端发来的请求消息 BufferedReader netIn = new BufferedReader(new InputStreamReader(socket.getInputStream())); //只读取第一行内容 String str = netIn.readLine();//GET //img//mn4.jpg HTTP/1.1 //解析读取的内容 String[] strArr = str.split(" ");//以空格分割字符串 String s = strArr[1];// //img//mn4.jpg if (!s.startsWith("//img")) {//访问的内容不存在 socket.close(); return; } String fileName = s.substring(s.lastIndexOf("/") + 1);// mn4.jpg //创建输入流,从文件读取客户端需要的数据 InputStream in = new FileInputStream("img\\" + fileName); byte[] bytes = new byte[1024 * 14]; int len = 0; //创建网络输出流给客户端发送数据 OutputStream netOut = socket.getOutputStream(); //产生响应头 netOut.write("HTTP/1.1 200 OK\r\n".getBytes()); netOut.write("content-type:image/jpeg\r\n".getBytes());//告诉浏览器,我这边返回的是一个图片 netOut.write("\r\n".getBytes()); //以上三行,固定写法,给浏览器看的 while ((len = in.read(bytes)) != -1) { netOut.write(bytes,0,len); } //关闭资源 netOut.close(); in.close(); netIn.close(); socket.close(); } catch (IOException e) { e.printStackTrace(); } } }.start(); } } }
操作步骤:
1,需要项目根目录下有一个名字为img的文件夹
2,文件夹中保存有mn4.jpg的图片文件
3,运行代码后在浏览器地址栏输入: 本机的IP地址 : 端口号 //img//mn4.jpg
4,按下回车,就会在浏览器出现相应的画面
浏览器效果图: