1. 1 package v2;
  2. 2
  3. 3 import java.io.IOException;
  4. 4 import java.io.OutputStream;
  5. 5 import java.io.PrintStream;
  6. 6 import java.io.PrintWriter;
  7. 7 import java.net.ServerSocket;
  8. 8 import java.net.Socket;
  9. 9 import java.util.List;
  10. 10 import java.util.Scanner;
  11. 11
  12. 12 public class Test
  13. 13 {
  14. 14 public static void main(String[] args)
  15. 15 {
  16. 16 try
  17. 17 {
  18. 18 Socket s = null;
  19. 19 ServerSocket ss = new ServerSocket(80);
  20. 20 while ((s = ss.accept()) != null)
  21. 21 {
  22. 22 Scanner input = new Scanner(s.getInputStream(), "utf-8");
  23. 23 int c = 0;
  24. 24 String tmp = null;
  25. 25 while (input.hasNextLine())
  26. 26 {
  27. 27 tmp = input.nextLine();
  28. 28 if (tmp.trim().length() == 0) {
  29. 29 break;
  30. 30 }
  31. 31 System.out.println(c + "·····································" + tmp);
  32. 32 c++;
  33. 33 }
  34. 34 System.out.println("开始响应·····························");
  35. 35 responseMsg(s, "Hello,world");
  36. 36 input.close();
  37. 37 s.close();
  38. 38 }
  39. 39 }
  40. 40 catch (IOException e)
  41. 41 {
  42. 42 e.printStackTrace();
  43. 43 }
  44. 44 }
  45. 45
  46. 46 private static void responseMsg(Socket s, String msg)
  47. 47 {
  48. 48 try
  49. 49 {
  50. 50 OutputStream out = s.getOutputStream();
  51. 51 PrintWriter pw = new PrintWriter(out);
  52. 52
  53. 53 pw.print("HTTP/1.0 500 OK\r\n");
  54. 54 pw.print("Content-type:text/html; charset=utf-8\r\n");
  55. 55 pw.print("\r\n");
  56. 56
  57. 57 pw.println(msg);
  58. 58 pw.flush();
  59. 59 pw.close();
  60. 60 }
  61. 61 catch (IOException e)
  62. 62 {
  63. 63 e.printStackTrace();
  64. 64 }
  65. 65 }
  66. 66
  67. 67 public static void showLines(List<String> lines)
  68. 68 {
  69. 69 for (String line : lines) {
  70. 70 System.out.println(line);
  71. 71 }
  72. 72 }
  73. 73 }

如果端口被占用了,windows系统可以cmd输入"netstat -ano|find "80"     找到相关进程的id,然后  "taskkill  /f /pid 进程id  "进行查杀

动手实现自己的http服务器【精简版】的更多相关文章

  1. Linux上oracle精简版客户端快速部署

    RHEL6 + Oracle 11g客户端快速部署 需求:只是用到客户端的sqlplus, sqlldr功能. 方案:用精简版实现客户端的快速部署 1.上传oracle精简版客户端到服务器/tmp目录 ...

  2. VMware10.06精简版安装后台运行

    VMware10.06精简版安装时会出现一个安装功能选择菜单,里面有一条后台运行必选功能,一般人会跳过条.当你打算在服务器上用vmware时,一定要安装后台运行服务,否则你无法换出正在运行的后台虚拟机 ...

  3. HTML5技术实现Web图形图像处理——WebPhotoshop精简版

    WebPhotoshop精简版是利用HTML5技术在Web上实现对图形图像的处理,构建易维护.易共享.易于拓展.实时性的Web图形图像处理平台. 精简版功能包括:图形绘制.图像处理.图像操作.完整版包 ...

  4. 安装CentOS7精简版后的配置工作

    CentOS7完整版有7.7G,太大了下载起来比较费劲,还是下载了精简版,但是精简版安装以后很多命令都没有,还要动手配yum源,按需安装 国内的yum源比较好的就是163的了,配置方法: 1,进入yu ...

  5. VMware Workstation 10.0 简中绿色精简版

    VMware Workstation是强大的虚拟机软件,能在一台机器上同时运行二个或更多Windows.DOS.LINUX系统,并进行开发.测试.部署新的应用程序.VMware10.0 延续VMwar ...

  6. DeepinXP Lite 6.2 精简版220M 安装IIS

    本作品由Man_华创作,采用知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议进行许可.基于http://www.cnblogs.com/manhua/上的作品创作. 用虚拟机装了DEEP ...

  7. WIN10X64LTSC2019中度精简版by双心

    WIN10X64LTSC2019中度精简版by双心https://www.cnblogs.com/liuzhaoyzz/p/11295032.html 一.前言:关于LTSC中度精简版的说明 一个MM ...

  8. ArcGIS10.2.1精简版、ArcGIS_Desktop10_Tutorial、破解文件等下载地址

    原版ArcGIS for Desktop的ISO文件一般都在4.5G以上,一般人用不上里面很多工具,下载回来又浪费时间,现推出ArcGIS10.2.1精简版(里面只包含主程序.Data Interop ...

  9. TeamViewer12.0.71503(远程控制软件)精简版 单文件企业版介绍

    TeamViewer 是一款能在任何防火墙和 NAT 代理的后台用于远程控制,桌面共享和文件传输的简单且快速的解决方案.为了连接到另一台计算机,只需要在两台计算机上同时运行 TeamViewer 即可 ...

  10. Log4j快速使用精简版

    Log4j快速使用精简版 1.导入log4j-1.2.17.jar包 2.在src根目录下创建log4j.properties文件 log4j.rootLogger=INFO, CONSOLE, FI ...

随机推荐

  1. sentienl

    整合springboot Spring Cloud Alibaba Sentinel 下载 导入依赖 <dependency> <groupId>com.alibaba.clo ...

  2. 3DCAT为华东师大设计学院打造元宇宙数字虚拟学院

    6月11日,华东师范大学设计学院在chi K11美术馆举办了一场别开生面的 2023 年本科毕业设计暨项目实践教学现场演示展.其中,元宇宙数字虚拟学院(一期)的现场发布会引起了现场震撼,吸引了众多观众 ...

  3. OpenLayers绘制热力图 代码记录

    这里给大家分享我在网上总结出来的一些知识,希望对大家有所帮助 做地图开发,往往需要掌握专题地图制作的技能.今天用OpenLayers6来做一个热力图的效果. 页面效果: 代码部分: <!DOCT ...

  4. C++ Concurrency in Action 读书笔记三:并发操作的同步

    Chapter 4 并发操作的同步·Synchronizing concurrent operations

  5. 《Go程序设计语言》学习笔记之defer

    <Go程序设计语言>学习笔记之defer 一. 环境 Centos8.5, go1.17.5 linux/amd64 二. 概念 语法上,一个 defer 语句就是一个普通的函数或方法调用 ...

  6. C# 人脸比对服务,自带模型,离线部署

    软件说明 基于以下开源项目,做了再次封装 GitHub - ViewFaceCore/ViewFaceCore: C# 超简单的离线人脸识别库.( 基于 SeetaFace6 ) 可以一键开启服务: ...

  7. JDK8 ::用法(双冒号)

    JDK8中有双冒号的用法,就是把方法当做参数传到stream内部,使stream的每个元素都传入到该方法里面执行一下. List<String> lt = Arrays.asList(&q ...

  8. KingbaseES运维案例之---数据库启动“could not open shared memory segment”

    ​ 案例说明: 在kylin系统下数据库启动出现"could not open shared memory segment xxxx"的故障,故障如下所示: 适用版本: Kingb ...

  9. Python爬虫爬取全球疫情数据并存储到mysql数据库

    思路:使用Python爬虫对腾讯疫情网站世界疫情数据进行爬取,封装成一个函数返回一个    字典数据格式的对象,写另一个方法调用该函数接收返回值,和数据库取得连接后把    数据存储到mysql数据库 ...

  10. 2 CSS基本选择器

    2 基本选择器 id选择器 id选择器使用"#"进行标识,后面紧跟id名,其基本语法格式为: #id名{属性1:属性值1;属性2:属性值2;属性3:属性值3;} 该语法中,id名即 ...