【libevent】多个服务器间通信问题,散分了

鱼弦
全栈领域优质创作者
博客专家认证
2017-05-23 04:59:41

现在搭建好了模拟客户端和服务器的点对点通信,但是现在想实现C->S->S 的机制,怎么实现中间服务器消息转发呢?
之前考虑过使用关键字回调转发消息,但是创建一个客户端进程exe,两个服务端进程exe,怎么搞?这个想法就行不通了。

各位大佬给个思路或者解法.
...全文
452 13 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
鱼弦 2017-05-31
  • 打赏
  • 举报
回复
引用 10 楼 Runnerchin 的回复:
还是没有看明白你的需求,应该是没理解你的通讯场景,我就宽泛地说一下吧:C-S1-S2 如果S1和S2之间传输的只是server之间特有的,和C没有关系的数据,那就在S1里直接起一个专连S2的新socket。 如果S1和S2之间传输的数据是C-S1相关的数据,就需要扩展一下C-S1的数据结构,加入client标识,S1-S2的数据变成{client-原数据}。 如果有S1和S2有多台的话,可以考虑引入队列服务器(比如各种mq),或者缓存服务器(比如redis)来传递序列化的消息,而不用关注socket本身,毕竟socket还是稍稍偏底层了一点。 或者再细描述一下你的场景呢
如果我想针对s与s之间加一个gateway或者附加一个心跳服,以及c与s会有一个外部gateway,有好的解决方案吗?
X-i-n 2017-05-31
  • 打赏
  • 举报
回复
还是没有看明白你的需求,应该是没理解你的通讯场景,我就宽泛地说一下吧:C-S1-S2 如果S1和S2之间传输的只是server之间特有的,和C没有关系的数据,那就在S1里直接起一个专连S2的新socket。 如果S1和S2之间传输的数据是C-S1相关的数据,就需要扩展一下C-S1的数据结构,加入client标识,S1-S2的数据变成{client-原数据}。 如果有S1和S2有多台的话,可以考虑引入队列服务器(比如各种mq),或者缓存服务器(比如redis)来传递序列化的消息,而不用关注socket本身,毕竟socket还是稍稍偏底层了一点。 或者再细描述一下你的场景呢
鱼弦 2017-05-31
  • 打赏
  • 举报
回复
引用 8 楼 zhao4zhong1 的回复:
不知道有多少前人掉在TCP Socket send(人多)send(病少)send(财富) recv(人多病)recv(少财富) 陷阱里面啊! http://bbs.csdn.net/topics/380167545
好的,我看看
赵4老师 2017-05-31
  • 打赏
  • 举报
回复
不知道有多少前人掉在TCP Socket send(人多)send(病少)send(财富) recv(人多病)recv(少财富) 陷阱里面啊! http://bbs.csdn.net/topics/380167545
鱼弦 2017-05-31
  • 打赏
  • 举报
回复
引用 5 楼 zhao4zhong1 的回复:
[quote=引用 3 楼 feng1790291543 的回复:] @赵4老师 是写的程序,不是用第三方工具
我建议你参考开源消息传递项目jabber[/quote] 这个我想到用的将socket和服务器节点存起来,转发头由发送服确定
鱼弦 2017-05-31
  • 打赏
  • 举报
回复
引用 4 楼 Runnerchin 的回复:
服务器和服务器之间通的时候传输的是什么数据?
结构体的,比如场景服与世界服通讯的
赵4老师 2017-05-31
  • 打赏
  • 举报
回复
引用 3 楼 feng1790291543 的回复:
@赵4老师 是写的程序,不是用第三方工具
我建议你参考开源消息传递项目jabber
鱼弦 2017-05-31
  • 打赏
  • 举报
回复
引用 12 楼 Runnerchin 的回复:
还是没看明白,gateway,心跳服是什么概念?
gateway是网关,我分内外网关了,心跳服是控制 发送消息队列的
X-i-n 2017-05-31
  • 打赏
  • 举报
回复
还是没看明白,gateway,心跳服是什么概念?
X-i-n 2017-05-24
  • 打赏
  • 举报
回复
服务器和服务器之间通的时候传输的是什么数据?
鱼弦 2017-05-23
  • 打赏
  • 举报
回复
@赵4老师 是写的程序,不是用第三方工具
鱼弦 2017-05-23
  • 打赏
  • 举报
回复
引用 1 楼 zhao4zhong1 的回复:
搜“jabber”? http://baike.baidu.com/link?url=OqXgNNaXDYlEPqBv0xVg4j_8xGVt5sYwqeDf6T7glS1K7csc2bPxJ1vL7uGgVcdE6IaGzabH6qy3I5gnw9hea_
赵老师,我在win下开发的,使用的libevent网络库,多个exe进程,怎么转发消息?你说的这个不太熟悉,有其他办法?

4,387

社区成员

发帖
与我相关
我的任务
社区描述
通信技术相关讨论
社区管理员
  • 网络通信
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧