我创建了一个用java编写的简单服务器,它只是将html文件的html代码发送给任何连接它的客户端。它使用端口8008.问题是当我使用chrome通过http://localhost:8008获取此html时,它似乎不起作用。我应该怎样做才能使两者正确沟通并让浏览器呈现html页面。我正在使用ServerSockets。另外,Web浏览器如何向服务器发送信息或请求?使用网址的任何方式?谢谢!
ServerSocket serverSocket = null;
try {
serverSocket = new ServerSocket(8008);
} catch (IOException e) {
System.err.println("Could not listen on port: 8008.");
System.exit(1);
}
Socket clientSocket = null;;
try {
clientSocket = serverSocket.accept(); //This is the browser requesting for connection
} 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() ) );
out.println("Some HTML Code"); //The browser should be able to render the HTML Code sent
out.close();
in.close();
clientSocket.close();
serverSocket.close();
答案 0 :(得分:2)
The server you've developed is **not a web server**, right? The server you've developed **cannot handle HTTP requests**(used Sockets), but unfortunately the
浏览器会使用协议(比如
HTTP
)来访问网络上的文件
。
你期望通过错误的过程得到结果。我会说开发一个客户端Java程序,它应该通过ServerSocket
初始化连接到你提到的端口。
答案 1 :(得分:0)
尝试使用TCPMON检查请求和响应,应该可以帮助您缩小故障排除范围。
答案 2 :(得分:0)
HTTP不只是HTML,还包括一些标题,v.g。
HTTP/1.0 200
必须由服务器传输。
检查:
a)服务器正在有效地接收请求(服务器正在运行并回答的日志)
b)您回复的消息是浏览器将接受的有效HTTP消息(HTTP是连接协议,而HTML是内容协议,您可以通过HTTP发送HTML或GIF图像)。
在Google中查找HTTP消息格式