知识大全 Java实现简单web服务器

Posted

篇首语:学向勤中得,萤窗万卷书。本文由小常识网(cha138.com)小编为大家整理,主要介绍了知识大全 Java实现简单web服务器相关的知识,希望对你有一定的参考价值。

Java实现简单web服务器  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!

  该程序简单实现web服务器 目前仅支持和gif/jpeg格式 下面是代码

  import java io * ;

  import * ;

  import java util * ;

  public class SimpleWebServer

  public static void main(String argv[]) throws Exception

  //Get the port as an argument

  // Also you could hard code the port to point to or any other port

  int port = (new Integer(argv[ ])) intValue();

  // Establish the listen socket

  ServerSocket socket = new ServerSocket(port);

  while(true)

  // Listen for a TCP connection request

  Socket connection = socket accept();

  processRequest(connection);

  

  

  private static void processRequest(Socket connection) throws Exception

  final String CRLF = \\r\\n ;

  Socket socket = connection;

  // Get a reference to the socket s input and output streams

  InputStream is = socket getInputStream();

  DataOutputStream os = new DataOutputStream(socket getOutputStream());

  // Set up input stream filters

  BufferedReader br = new BufferedReader(new InputStreamReader(is));

  // Get the request line of the HTTP request message

  String requestLine = br readLine();

  // Extract the filename from the request line

  StringTokenizer tokens = new StringTokenizer(requestLine);

  tokens nextToken(); // skip over the method which should be GET

  String fileName = tokens nextToken();

  // Prepend a so that file request is within the current directory

  fileName = /root/ + fileName ;

  // Open the requested file

  FileInputStream fis = null ;

  boolean fileExists = true ;

  try

  fis = new FileInputStream(fileName);

   catch (FileNotFoundException e)

  fileExists = false ;

  

  // Construct the response message

  String statusLine = null;

  String contentTypeLine = null;

  String entityBody = null;

  if (fileExists)

  statusLine = HTTP/ OK + CRLF;

  contentTypeLine = Content Type: +

  contentType(fileName) + CRLF;

   else

  statusLine = HTTP/ Not Found + CRLF;

  contentTypeLine = Content Type: text/ + CRLF;

  entityBody = <HTML> +

   <HEAD><TITLE>Not Found</TITLE></HEAD> +

   <BODY>Not Found</BODY></HTML> ;

  

  // Send the status line

  os writeBytes(statusLine);

  // Send the content type line

  os writeBytes(contentTypeLine);

  // Send a blank line to indicate the end of the header lines

  os writeBytes(CRLF);

  // Send the entity body

  if (fileExists)

  sendBytes(fis os);

  fis close();

   else

  fileExists = false;

  os writeBytes(entityBody) ;

  

  // Close streams and socket

  os close();

  br close();

  socket close();

  

  private static void sendBytes(FileInputStream fis

  OutputStream os) throws Exception

  // Construct a K buffer to hold bytes on their way to the socket

  byte[] buffer = new byte[ ];

  int bytes = ;

  // Copy requested file into the socket s output stream

  while ((bytes = fis read(buffer)) != )

  os write(buffer bytes);

  

  

  private static String contentType(String fileName)

  if(fileName endsWith( ) || fileName endsWith(l ))

  return text/ ;

  

  else if (fileName endsWith( gif ))

  return image/gif ;

  

  else if (fileName endsWith( jpg ) || fileName endsWith( jpeg ))

  return image/jpeg ;

  

  return application/octet stream ;

  

cha138/Article/program/Java/hx/201311/25715

相关参考

知识大全 如何用Java实现Web服务器

如何用Java实现Web服务器  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  一HTTP协议的作

知识大全 JAVA实现支持视频点播WEB服务器

JAVA实现支持视频点播WEB服务器  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  一项目简介 

知识大全 Java Web 服务学习报告—Web简介

JavaWeb服务学习报告—Web简介  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  在网络飞速

知识大全 Java web start入门

Javawebstart入门  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  下面是用最简单的He

知识大全 Java学习:线程池的简单构建

Java学习:线程池的简单构建  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  现在服务器端的应用

知识大全 基于php使用memcache存储session的详解

  web服务器的phpsession都给memcached这样你不管分发器把ip连接分给哪个web服务器都不会有问题了配置方法很简单就在php的配置文件内增加一条语句就可以了不过前提你需要装好mem

知识大全 ASP.NET创建Web服务之管理Web服务状态

ASP.NET创建Web服务之管理Web服务状态  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  

知识大全 一个简单的php在线端口扫描器

  PHP是一种功能强大的Web开发语言开发效率高语法简单为动态网站量身定做加强面向对象(向C++靠拢与JAVA搭了点边)可惜单线程(这是至命弱点据说PHP是用CC++编写的)也能用CC++JAVA开

知识大全 配置Web服务器(IIS)虚拟站点

ASP.NET开发宝典:配置Web服务器(IIS)虚拟站点  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一

知识大全 java与其他web开发编程语言的比较

  现在的软件开发语言太多了尤其现在的所有软件都基本是B/S结构的所以对WEB开发语言的使用也就越来越多搞了几年的JAVA开发 这段时间也抽了点时间玩玩dotnetperlphp等其它WEB