用java编写的浏览器和服务器之间的通信

时间:2011-08-08 10:16:31

标签: java browser

我创建了一个用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();

3 个答案:

答案 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消息格式