首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何实现一个好的客户机-服务器方法?

如何实现一个好的客户机-服务器方法?
EN

Stack Overflow用户
提问于 2012-02-05 20:50:12
回答 3查看 576关注 0票数 1

我正在开发一个分布式应用程序,我需要将基于客户机的Java连接到基于服务器的C++。他们两个都需要互相发送信息,但是我需要他们在等待信息的时候做一些事情,他们不知道什么时候会得到新的信息,或者什么时候发送信息。

我怎样才能做到这一点?现在,我正在尝试实现与Socket的基本通信,但实际上我无法与它们进行通信。我读过使用套接字+线程通常是客户端服务器应用程序的好方法。

你能给我推荐一些网页或书籍来阅读,或者寄给我一些示例代码来学习吗?

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

编辑:

我会补充一些额外的信息。

我希望取得以下成果:

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

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

从Java程序(远程设备)运行的应用程序是一个交互式的可触摸屏幕,不能被网络传输阻塞,因为它必须继续为用户工作,所以所有的网络都应该在一个单独的线程中完成。

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

如果能轻松地重新连接到服务器,那就太好了。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2012-02-05 21:09:42

我不知道您的应用程序是什么,但是健壮的客户端服务器套接字编程很难正确完成。硬件字节顺序、字符串编码、网络错误、重试、重复消息、ack等。需要很多好的设计和仔细的编程。在考虑使用多个线程之前,您需要让它像单线程一样正常工作。

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

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

http://activemq.apache.org/

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

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

票数 1
EN

Stack Overflow用户

发布于 2012-02-05 23:52:43

是一个用于分布式应用程序的现代和良好的库:

  • C++和Java等多种语言
  • 许多平台
  • GNU GPL
  • 良好性能
  • 易于使用

首先,定义要在服务器和客户端之间交换的消息。

然后,实现C++和Java源代码来处理这些消息。

更多信息请访问http://zeroc.com/ice.html

玩得开心;-)

编辑:--我必须在一些项目中使用王牌。我可以看出ACE很古老,可能很成熟,但是使用过时的C++编码规则:-(因此ACE不像STL或BOOST那样容易使用。而且ACE不是很有效率..。我更喜欢ICE ;-)

票数 3
EN

Stack Overflow用户

发布于 2012-02-05 21:14:46

我曾经做过这样的事。在我的例子中,使用JNI将我的C++应用程序连接到本地Java应用程序比较容易,然后让这两个Java应用程序互相交谈。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9152896

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档