在做servlet时,有点搞晕了,在dopost()方法中有HttpServletRequest和HttpServletResponse两个参数,request用于获取客户端的一些信息,而response则用于向客户端返回信息,有点不明白的是,当我使用response输出信息时,servlet是怎么知道我返回到的客户端是哪个客户端的?看到网上很多贴都说request使用getRemoteAddr或者request.getHeader("x-forwarded-for")
可以取出客户端ip,但我取出来都是127.0.0.1。我想实现的功能是,有两台电脑1和2,servlet接收到电脑1发送的数据后,进行转发到电脑2,而不是直接返回数据给电脑1,请问这个过程该怎样实现呢?谢谢各位了!
个人意见
首先,如果你要在服务器(这里用S表示)端将响应内容发送给电脑2,那么这样有两种情况:
1)电脑2仍作为客户端,服务器S还是服务器端,那么你就需要有电脑2主动发起请求,来获取S中的响应。这样可以采用3楼的websockt或者轮询等技术。
2)电脑2作为服务器端,S作为客户端,由S向电脑2发起请求,此时S中的响应作为请求内容发送给作为服务器的电脑2,然后由电脑2处理。
请求必须是由客户端向服务器端发起的,而不能由服务器端主动发送到客户端。
不过呢,要想实现有服务器端主动发送到客户端,可以采用一种折中的方式,推荐你学习一下DWR,即direct web remoting,它可以通过服务器直接发送到客户端,但这也只是表面现象,其内在机制还是由客户端发起请求。
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。