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

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

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

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

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

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

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

参考这个:http://blog.csdn.net/gisredevelopment/article/details/38392629/

看一下Socket的双向通信吧

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