rodhai 2017-12-27 05:43 采纳率: 50%
浏览 2961
已采纳

socket向指令客户端发送消息问题

我写了一个socket服务端程序,A客户端长连接上来,我就把socket存在一个list里面,当B客户端发送数据上来,我就把数据发给A客户端,如何能够等待A客户端返回数据以后,我再返回数据返回给B客户端呢?每次等待A客户端发送数据上来,就在另外一个线程里面了,导致到B一直收不到返回信息。我想实现的是,B发送上来的时候我发给A,等待A返回数据后,再返回给B。
哪个大神有类似的代码demo,图片说明
图片上,这是个for循环,当B发送命令给服务端以后,我根据命令找到了目标A,发送命令给A了,如何等待A返回数据以后再返回给B呢,后面不知道如何实现

  • 写回答

8条回答 默认 最新

  • 小小农码 2017-12-29 04:11
    关注

    两种方式,第一,不经过服务器,直接ab点对点,把服务器的功能写到客户端,比如记录聊天记录什么饿
    第二,服务器端不要用list,用键值对,键就是客户端用户名,比如B ,当AB上线后,服务端记录socket,当B发消息给A时,中间经过服务器,这个时候就要求B的消息体中要告诉服务器我这个消息要发给谁,比如消息最前面是A,服务器收到后在键值对中找到A,这个时候标识一下,这个消息是B发来的,然后将这个标识连同消息一起发送给A,A回复时也是一样的逻辑,
    总结就是
    B-----服务器 这一步需要告诉服务器我给谁发消息
    ----服务器-----这一步服务器经过逻辑处理,知道这个消息来之于B,要发到A
    服务器------A 这一步服务器将消息给A 并且有一个标识告诉A 这个消息来之于B

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
  • huizi666 2017-12-27 05:53
    关注

    修改一下循环规则,分好线程。

    评论
  • szcg1981 2017-12-27 07:32
    关注

    是否可以考虑数据和标志存在某个中间文件

    评论
  • foxtail76 2017-12-27 07:54
    关注

    使用全局变量接收A的返回数据,当发送指令给A的时候,把全局变量清空,A发送数据上来的时候,把数据赋给这个全局变量,B在发送数据给A后,一直检测此全局变量,若全局变量有值,就说明A返回了

    评论
  • yunqing1201 2017-12-27 08:32
    关注

    线程同步机制啊,B线程来后开始等待,等待超时或者A已来数据!!!!

    评论
  • JPF1024 2017-12-28 06:04
    关注
    评论
  • 关注

    看一下Socket的双向通信吧

    评论
  • 风遇见叶子 2018-01-10 07:54
    关注

    SignalObjectAndWait c++中这个函数可以帮你实现这个功能。

    评论
查看更多回答(7条)

报告相同问题?

悬赏问题

  • ¥15 组件库引入并使用在若依框架未展示
  • ¥149 关于#使用python 的Flash Echarts+ajax+mysql动态数据实现饼图#的问题,请各位专家解答!
  • ¥15 RichTextBox中追加文本时报错
  • ¥15 关于c语言的学习问题
  • ¥15 activity升级到flowable工作流act_ge_bytearray的草稿json数据复制到act_de_model 的model_editor_json的脚本
  • ¥15 cvi使用CreateThread创建线程时,出现存储空间不足无法处理此命令的错误
  • ¥15 求苹果推信imessage批量推信技术
  • ¥15 ubuntu 22.04 系统盘空间不足。隐藏的docker空间占用?(相关搜索:移动硬盘|管理系统)
  • ¥15 c++ word自动化,为什么可用接口是空的?
  • ¥15 Matlab计算100000*100000的矩阵运算问题: