但是如果你是做要自己用java实现一个http服务器的话就要稍微麻烦一点
http服务器,本质上还是基于tcpip协议的服务器,首先用java的ServerSocket监听一个端口(也可以使用开源的server组件,如quickserver之类的),然后对客户端发上来的数据进行处理,这里就需要了解一下http协议了,因为上来的数据,都是按照http协议来组织的,你需要将请求数据解析后,将响应数据组织成http的响应,发回给客户端。这样一个简单的http服务器就实现了。
但是这个请求和响应都有很多种类,一个完整的http服务器应该要都能够支持,所以这里面的工作量还是有一点的。
另外,上面说的http服务器只是一个静态的服务器,如果你想让你写的服务具有动态功能,那你的服务器还得提供javaee的容器功能,这样做下去,没准你也能写一个tomcat出来了……
以下是Sun提供的一个简单的“Knock Knock"”服务器:import java.net.*import java.io.*public class KnockKnockServer {
public static void main(String[] args) throws IOException {
ServerSocket serverSocket = null
try {
serverSocket = new ServerSocket(4444)
} catch (IOException e) {
System.err.println("Could not listen on port: 4444.")
System.exit(1)
}
Socket clientSocket = null
try {
clientSocket = serverSocket.accept()
} catch (IOException e) {
System.err.println("Accept failed.")
System.exit(1)
}
PrintWriter out = new PrintWriter(clientSocket.getOutputStream(), true)
BufferedReader in = new BufferedReader(
new InputStreamReader(
clientSocket.getInputStream()))
String inputLine, outputLine
KnockKnockProtocol kkp = new KnockKnockProtocol()
outputLine = kkp.processInput(null)
out.println(outputLine)
while ((inputLine = in.readLine()) != null) {
outputLine = kkp.processInput(inputLine)
out.println(outputLine)
if (outputLine.equals("Bye."))
break
}
out.close()
in.close()
clientSocket.close()
serverSocket.close()
}}
再简单不过了。
欢迎分享,转载请注明来源:夏雨云
评论列表(0条)