繁体   English   中英

服务器如何将数据推送到客户端?

[英]How can server push data to client?

学习java服务器技术,试图澄清一些事情。 很少有技术允许Java应用程序相互通信。

1)通过http的Web服务(REST / SOAP)

2)通过http使用URLConnection进行简单的POST / GET。

3)插座

4)RMI =套接字+对象序列化+一些实用程序

5)不同的媒体服务器,如red5 = rtmp或rtmpt

所有这些技术都假定存在服务器应用程序和客户端应用程序。 客户端应用程序知道服务器地址,应该是调用的发起者 据我所知,现在服务器将数据推送到客户端,他只能将数据作为响应发送回客户端。 并且有可能,如果只有他们改变他们的角色,在这种情况下服务器应该知道客户端IP。

所以我想知道网络游戏是如何运作的? 是否有可能始终在服务器和客户端之间打开连接和交换数据,而不是每1-2秒从客户端请求一次,服务器就不知道客户端IP。 我不是在谈论彗星和其他黑客。

谢谢

大多数双向持久应用程序打开网络端口并保持打开状态。 服务器侦听一个众所周知的端口,当客户端连接到该端口时,它会获得与服务器的持久TCP连接。 像这样的连接基本上是双向“管道”,数据可以同时在两个方向上串行流动。 只要该管道处于打开状态,服务器就会侦听来自客户端的消息,并且客户端会侦听来自服务器的消息。

用于TCP管道的通用I / O API允许连接的任一端“被唤醒”:异步I / O请求从OS或I / O库或客户端/管理的线程执行已注册的回调函数服务器在“阻塞”调用上绑定自己的线程,该调用在数据可用时返回。 此模型不需要轮询或重新连接尝试,客户端和服务器都“知道”数据何时可用并且可以立即对其进行操作。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM