繁体   English   中英

如何实现良好的客户端-服务器方法?

[英]How can I implement a good Client-Server approach?

我正在开发分布式应用程序,并且需要将基于客户端Java的服务器连接到基于C++的服务器。 他们两个都需要互相发送信息,但是我需要他们能够在等待信息的同时做事,而且他们不知道何时获取新信息或发送信息。

我该如何实现? 现在,我正在尝试与Sockets进行基本通信,但是我并没有真正进行通信。 我已经读过,对于客户端服务器应用程序,使用套接字+线程通常是一种不错的方法。

您能否推荐我一些网络或书籍来阅读此书,或者给我发送一些示例代码来学习?

您是否认为我应该使用比套接字更好的其他方法? 也许是更高级别的库(对于c ++和java,我将需要它)还是完全不同的方式?

编辑:

我将添加一些其他信息。

我很想实现以下目标:

我的C ++程序有一个主循环,在这里我想进行一个类似GetUpdatedDataFromRemoteDevice()的调用,在其中读取以前从网络(例如套接字)更新的一些数字变量的新值。

最终,C ++程序将需要向远程设备发送一条消息,告诉他发送其他类型的数据,然后,继续获取更新后的值。

从Java程序(远程设备)开始,正在运行的应用程序是一个可触摸的交互式屏幕,它不能被网络传输阻止,因为它必须一直为用户工作,因此所有联网都应在单独的线程中进行。

该线程应该连接到服务器,并在按下按钮时开始循环发送数据(4个不断变化的数值),直到发生另一个事件为止。

可以轻松地重新连接到服务器也很不错。

ICE是一个现代的,很好的分布式应用程序库:

  • 许多语言,例如C ++和Java
  • 许多平台
  • GNU GPL
  • 很好的表现
  • 易于使用

首先,您定义要在服务器和客户端之间交换的消息。
然后,您实现C ++和Java源代码来处理这些消息。

有关更多信息,请访问http://zeroc.com/ice.html
玩得开心 ;-)

编辑:我必须在某些项目中使用ACE 我可以说ACE很老,也许很成熟,但是使用了过时的C ++编码规则:-(因此ACE不像STLBOOST那样易于使用。此外,ACE并不是真正高效的...我更喜欢ICE ;-)

我不知道您的应用程序是什么,但是强大的客户端服务器套接字编程是一项艰巨的任务,需要正确执行。 硬件字节顺序,字符串编码,网络错误,重试,重复消息,Ack等。需要大量好的设计和仔细的编程。 您甚至需要考虑使用多线程之前,就需要使其在单线程中运行良好。

除非您需要从服务器到客户端的即时通知,否则建议您使用HTTP作为客户端和服务器之间的协议。 客户端可以偶尔轮询服务器以获取新消息。

无论如何,这个问题已经被解决了好多次了。

http://activemq.apache.org/

http://www.rabbitmq.com/devtools.html

http://www.cs.wustl.edu/~schmidt/ACE-overview.html

我曾经做过这样的事情。 以我为例,使用JNI将C ++应用程序连接到本地Java应用程序更容易,然后使两个Java应用程序相互通信。

暂无
暂无

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

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