ServerSocket如何能够接收HTTP请求?

时间:2018-10-30 18:08:44

标签: java http port serversocket

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

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 get请求。

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

1 个答案:

答案 0 :(得分:2)

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

您的示例成功的原因是,由于以下原因,您正在侦听端口9000:

ServerSocket listner = new ServerSocket(9000);

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

因此,它明确告诉浏览器使用9000而不是80。

如果要使用80,则只需在ServerSocket构造函数中将端口号从该行更改为80,就可以假设同一网络接口上没有其他端口正在使用80。