我的简单服务器有一个ServerSocket
对象,可以侦听端口并接受套接字。
Socket socket = serverSocket.accept();
一旦我有了这个套接字,我怎么把它变成一个HttpRequest
对象,所以我可以轻松确定套接字正在寻找的域?
答案 0 :(得分:3)
套接字位于网络堆栈的完全不同的层上,而不是http请求。 所以你不能只是将一个套接字“转”成一个http请求。 见http://en.wikipedia.org/wiki/OSI_model - >套接字在第4层运行,http请求将在第7层。
套接字是处理网络通信的工具。这不一定是http,但可以是任何东西(例如ftp或专有协议)。 套接字只会给你一个数据流,你必须解释。
我建议你使用apache http-components(http://hc.apache.org/)之类的东西来获取webserver-stuff。有很多框架可以满足您的需求,而不是自己实现它。
答案 1 :(得分:0)
我的朋友,你必须从套接字读取数据,解析它,并确定它是否符合http协议,然后创建httprequest,你可以转发给任何需要它的人。这已经在诸如jetty或tomcat
之类的服务器中为您完成了答案 2 :(得分:0)
我找到了一种有效的方法:
Socket serverSoc = srvSocket.accept();
DefaultHttpServerConnection serverConn = null;
try {
HttpParams params = new BasicHttpParams();
serverConn = new DefaultHttpServerConnection();
serverConn.bind(serverSoc, params);
HttpRequest request = serverConn.receiveRequestHeader();
}