我已经使用套接字编程实现了简单的客户端-服务器程序。这是我的服务器代码段
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/)。
答案 0 :(得分:2)
虽然默认 HTTP端口是80,但没有什么可以阻止您使用其他端口。实际上,也通常使用其他端口,例如8080
和更高的端口号,这些端口号与用于其他应用程序(电子邮件等)的标准端口号不冲突。
您的示例成功的原因是,由于以下原因,您正在侦听端口9000:
ServerSocket listner = new ServerSocket(9000);
您在浏览器中使用的相应URL是: http://localhost:9000
因此,它明确告诉浏览器使用9000而不是80。
如果要使用80,则只需在ServerSocket
构造函数中将端口号从该行更改为80,就可以假设同一网络接口上没有其他端口正在使用80。