服务器怎样才能主动下发命令到客户端

wangziyilimingjie 2014-11-20 03:35:02
情况是这样: 我这边是C++socket/TCP服务器,然后有几万台客户端长连接我的服务器,这时,web端想对客户端进行参数设置,于是web端连到我的TCP服务器发来它想设置的客户端的ID和设置参数,我这边就需要把web端发来的设置参数转发到对应的那台客户端上.


那么问题来了:我要怎么在几万台客户端中把设置参数send到指定的这台客户端,因为我的服务器是接到客户端发来的数据才做应答,算被动模式的,怎么才能做到主动下发命令到指定的客户端呢? 我初步思路是当客户端连上来后我把socket连接ID和客户端ID保存下来,然后想主动下发的时候去查找连接ID,直接send命令,这样可以吗?如果可以,那这个socket连接ID和客户端ID要保存在哪里才能快速响应主动下发?
...全文
881 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
wangziyilimingjie 2014-11-23
  • 打赏
  • 举报
回复
引用 1 楼 zhao4zhong1 的回复:
客户端定时发送心跳包给服务器端,服务器端如果没什么可让客户端干的,就仅返回心跳验证包,否则发心跳验证附带命令,客户端收到心跳验证附带命令包后,执行对应命令。
赵老师没看我的问题啊....
wangziyilimingjie 2014-11-23
  • 打赏
  • 举报
回复
引用 5 楼 LinuxCard 的回复:
可以肯定服务器端socket程序不是你写的,服务器端会保存所有用户连上来的信息的,亲,所以,能收就能发
您说的太对了,确实不是我写的,我也不太懂底层通信的功能,能告诉我一下,这个服务器端保存用户连上来的信息,是保存在哪里的吗 我去哪里能找到这段保存信息的代码?
LinuxCard 2014-11-23
  • 打赏
  • 举报
回复
引用 6 楼 wangziyilimingjie 的回复:
[quote=引用 5 楼 LinuxCard 的回复:] 可以肯定服务器端socket程序不是你写的,服务器端会保存所有用户连上来的信息的,亲,所以,能收就能发
您说的太对了,确实不是我写的,我也不太懂底层通信的功能,能告诉我一下,这个服务器端保存用户连上来的信息,是保存在哪里的吗 我去哪里能找到这段保存信息的代码?[/quote] 保存的连接信息是在程序内部,你如果没有源代码,是没办法修改获取的,如果有源代码,你看懂了源代码,也就会修改了
LinuxCard 2014-11-21
  • 打赏
  • 举报
回复
可以肯定服务器端socket程序不是你写的,服务器端会保存所有用户连上来的信息的,亲,所以,能收就能发
宝龙哥 2014-11-20
  • 打赏
  • 举报
回复
用TList类型或结构就可以保存了,用的时候轮循即可。几万台客户端同时连接很夸张的,这种情况下最好不要使用长连接,最好是参照QQ使用UDP类协议 如果是长连接,有两种方式实现呼叫客户端,一种是向客户端的监听端口发送指令包,一种是使用DataSnap的调用客户端代码的功能
我不懂电脑 2014-11-20
  • 打赏
  • 举报
回复
你的方法可以,这个socket连接ID和客户端ID保存在内存里用map容器保存就可以了
aniugee 2014-11-20
  • 打赏
  • 举报
回复
TCP长连接、心跳、保存客户端列表进行检索发送给指定用户
赵4老师 2014-11-20
  • 打赏
  • 举报
回复
客户端定时发送心跳包给服务器端,服务器端如果没什么可让客户端干的,就仅返回心跳验证包,否则发心跳验证附带命令,客户端收到心跳验证附带命令包后,执行对应命令。

1,316

社区成员

发帖
与我相关
我的任务
社区描述
C++ Builder 网络及通讯开发
社区管理员
  • 网络及通讯开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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