2011-08-08 37 views
1

我用java写了一个简单的服务器,它只是将html文件的html代码发送给任何连接到它的客户端。它使用端口8008.问题是,当我使用chrome通过http://localhost:8008获取此html时,它似乎不起作用。我应该怎么做才能让这两者正确通信并让浏览器呈现html页面。我正在使用ServerSockets。另外,Web浏览器如何向服务器发送信息或请求?任何使用网址的方法?谢谢!用java编写的浏览器和服务器之间的通信

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(); 
+1

无代码?你如何期望我们提供帮助? – SJuan76

+0

我已发布代码 – Ram

回答

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程序,它应该连接到你在初始化时提到的端口。

+0

这就是我先做的。但我们需要使用localhost:port方式。无论如何,使用serversockets的java服务器可以以浏览器可以读取的格式输出数据吗? – Ram

+0

将HTML生成到HTTP服务器的'www'目录(如Apache HTTP服务器),以便您可以在Web浏览器中获取HTML ... – Venkat

0

尝试使用TCPMON检查请求和响应,应该帮助您缩小故障排除的范围。

+0

您可以在[这里](http://code.google.com/p/tcpmon/) – sudmong

0

HTTP不仅仅是HTML,还包含一些标题,例如,

HTTP/1.0 200 

必须由服务器传输。

检查:

一)服务器正在有效地接收到请求(日志服务器正在运行,并且应答)

b)在你所回复的信息是有效的HTTP消息的浏览器将接受(HTTP是一种连接协议,而HTML是一种内容协议,您可以通过HTTP发送HTML或GIF图像)。

在Google上查找HTTP消息格式

相关问题