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

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已来数据!!!!

    打赏 评论
  • Q544471255 2017-12-28 06:04
    打赏 评论
  • 看一下Socket的双向通信吧

    打赏 评论
  • 风遇见叶子 2018-01-10 07:54

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

    打赏 评论

相关推荐 更多相似问题