首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > JAVA > Java Web开发 >

用ServerSocket接收Http请求解决办法

2012-02-22 
用ServerSocket接收Http请求我想用ServerSocket监听一个端口,然后通过在浏览器中输入http://localhost:por

用ServerSocket接收Http请求
我想用ServerSocket监听一个端口,然后通过在浏览器中输入http://localhost:port/的方式访问这个server。有没有谁遇到过这样的问题?

[解决办法]

Java code
import java.net.Socket;import java.net.ServerSocket;import java.net.InetAddress;import java.io.InputStream;import java.io.OutputStream;import java.io.IOException;import java.io.File;public class HttpServer{    /**     * WEB_ROOT is the directory where our HTML and other files reside. For     * this package, WEB_ROOT is the "webroot" directory under the working     * directory. The working directory is the location in the file system     * from where the java command was invoked.     */    public static final String WEB_ROOT = System.getProperty("user.dir")+File.separator+"webroot";    // shutdown command    private static final String SHUTDOWN_COMMAND = "/SHUTDOWN";    // the shutdown command received    private boolean shutdown = false;    public static void main(String[] args)    {        HttpServer server = new HttpServer();        server.await();    }    public void await()    {        ServerSocket serverSocket = null;        int port = 8080;        try        {            serverSocket = new ServerSocket(port, 1, InetAddress.getByName("127.0.0.1"));        }        catch (IOException e)        {            e.printStackTrace();            System.exit(1);        }        // Loop waiting for a request        while (!shutdown)        {            Socket socket = null;            InputStream input = null;            OutputStream output = null;            try            {                socket = serverSocket.accept();                input = socket.getInputStream();                output = socket.getOutputStream();                // create Request object and parse                Request request = new Request(input);                request.parse();                // create Response object                Response response = new Response(output);                response.setRequest(request);                response.sendStaticResource();                // Close the socket                socket.close();                // check if the previous URI is a shutdown                // command                shutdown = request.getUri().equals(SHUTDOWN_COMMAND);            }            catch (Exception e)            {                e.printStackTrace();                continue;            }        }    }}
[解决办法]
忽悠人用的。

Java code
package org.sl.test;import java.net.InetSocketAddress;import java.net.ServerSocket;import java.net.Socket;import java.net.SocketAddress;/** * 忽悠人的http 服务器 * @author shanl * */public class HttpServer {    static public void start(){        StringBuilder echo = new StringBuilder();        echo.append("<html>");        echo.append("<head>");        echo.append("<title>hello</title>");        echo.append("</head>");        echo.append("<body>");        echo.append("<center>");        echo.append("<b1>Welcome to my home page.</b1>");        echo.append("</center>");        echo.append("</body>");        echo.append("</html>");                ServerSocket ss = null;        int port = 8010;        SocketAddress address = null;        Socket connect = null;        byte[] buffer = new byte[512];        int readLen = 0;                try{            System.out.println("开始监听:" + port);            address = new InetSocketAddress("192.168.2.23", port);            ss = new ServerSocket();            ss.bind(address);                        while(true){                connect = ss.accept();                                do{                    readLen = connect.getInputStream().read(buffer);                    System.out.println(new String(buffer));                }while(readLen == 512);                                connect.getOutputStream().write(echo.toString().getBytes());                connect.close();            }        }catch(Exception ex){            ex.printStackTrace();        }    }        public static void main(String[] args){        start();    }} 

热点排行