首页 > 解决方案 > ServerSocket 如何能够接收 HTTP 请求?

问题描述

我已经使用套接字编程实现了简单的客户端-服务器程序。这是我的服务器代码片段,

ServerSocket listner = new ServerSocket(9000);
while(true){
Socket socket = listner.accept();
// here a new thread is spawn for each request Which prints 
// the data received from client using socket input stream
}

当服务器启动并从浏览器中访问 URL( http://localhost:9000 ) 时,我可以看到控制台上打印了 HTTP 获取请求。

据我所知,HTTP 侦听端口 80(即,所有传入的 HTTP 请求都来自此端口)。我的问题是,如何通过端口 9000 接收 http 请求。如果我使用的 URL 告诉忽略(或可能绕过)端口 80?然后,如何使用监听标准 HTTP 端口的套接字实现服务器程序:80(我的意思是 htting URL http://localhost/)。

标签: javahttpportserversocket

解决方案


虽然默认HTTP 端口是 80,但没有什么能阻止您使用其他端口。事实上,其他端口也很常用,例如8080与用于其他应用程序(电子邮件等)的标准端口号不冲突的更高端口号。

由于这一行,您的示例有效,因为您正在侦听端口 9000:

ServerSocket listner = new ServerSocket(9000);

您在浏览器中使用的相应 URL 是: http://localhost:9000

所以它明确告诉浏览器使用 9000 而不是 80。

如果您想使用 80,您只需在ServerSocket构造函数中将端口号从该行更改为 80,假设没有其他东西已经在同一网络接口上使用端口 80。


推荐阅读