Java/Socket - 使用localhost在浏览器中打开文件

3

我需要在我的浏览器中放置类似这样的内容:

  http://localhost:1234/page.html

然后获取 "page.html" 文件的内容。问题是 - 我使用套接字连接到1234主机,但我该如何读取文件名并将其传递给我的套接字,以便读取不同的html页面?

任何形式的帮助都将不胜感激。


1
你可以比使用com.sun.httpserver内置的http服务器实现更轻松地完成生活。 - pvg
2个回答

1
你应该阅读套接字的内容并将其解析为HTTP响应。
看一下这个问题。当您解析响应时,您将可以访问响应头,其中包括文件的URL(路径),然后您可以读取文件并将内容发送回套接字。当然,您还需要以HTTP响应的形式包装结果。
更好的选择是使用现成的Web服务器来完成工作。比如tomcat

是的,这是真的。我已经完成了这个任务,现在有了这个:"GET /page.html HTTP/1.1 (...)",但我仍然不知道如何提取出这个URL - 是否有相应的方法呢?(我已经阅读了Socket的Oracle文档,但仍然不知道:() - zerken
我建议您使用现成的解析器来解析数据包的内容。 我仍然不知道您在哪个部分遇到了问题。 - Aᴍɪʀ
抱歉,我花了很多时间尝试让它工作,所以停止了逻辑思考。我的瓶颈是获取带有文件路径的标题,然后我不知道如何将其传递给我的BufferedReader以获取内容。如果可能的话,我想以这种方式实现。 - zerken
如果您在提问时附上一些代码,人们可以更好地帮助您。 - Aᴍɪʀ

0

您将创建一个标准的TCP监听套接字并进行相应的配置。

当浏览器尝试导航到IP地址和端口时,浏览器会发送HTTP 1.1 GET请求。您的Java程序必须解释请求字符串并相应地响应。您的响应必须包含一个格式正确的HTTP 1.1响应,紧随其后的是HTML。

编辑:在上面的评论中,GET请求中的/是您希望定位的文件的路径。例如,默认情况下,浏览器只发送/,因此您应该使用index.htm文件的内容进行响应,因为index.htm应该是索引,对吧?所以就这样编码吧!

如果需要(哈哈),您将在有限数量的线程上创建TCP套接字(因此您应该为此创建自定义类),以便多个浏览器可以同时访问您的服务器。

愉快的编码

这里是一个链接,可以帮助您了解HTTP请求


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接