知识大全 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
相关参考