C#tcpClient-如何知道请求的答复何时到达

C#tcpClient-如何知道请求的答复何时到达,c#,tcp,tcpclient,C#,Tcp,Tcpclient,因此,我有一个简单的tcp客户机/服务器设置,可以来回发送对象,而且效果很好 但假设我现在想打个电话,向服务器询问一组特殊的信息,比如“产品”,我需要知道传入消息的“答案”是我特别要求的 由于接收消息的循环只是检查消息的类型并对其作出反应,因此很难说“此消息就是您请求的消息” 示例: -按钮已单击 -消息被发送到服务器 -还有一些其他消息到达,说明我为什么等待答案 -正确的消息到达我建议您按照以下方式设计消息: 如图所示,使用可序列化对象(XmlSerializer) 这个对象应该有两个“主要”

因此,我有一个简单的tcp客户机/服务器设置,可以来回发送对象,而且效果很好

但假设我现在想打个电话,向服务器询问一组特殊的信息,比如“产品”,我需要知道传入消息的“答案”是我特别要求的

由于接收消息的循环只是检查消息的类型并对其作出反应,因此很难说“此消息就是您请求的消息”

示例:
-按钮已单击
-消息被发送到服务器
-还有一些其他消息到达,说明我为什么等待答案

-正确的消息到达我建议您按照以下方式设计消息:

  • 如图所示,使用可序列化对象(XmlSerializer)
  • 这个对象应该有两个“主要”属性:有效负载本身和一个标识符,以获取“这是什么类型的消息”,还可以添加一些requestId属性(如果您正在收听广播服务,则知道此消息是为您准备的)

  • 您可以使用WCF框架来处理请求,它通过HTTP/TCP处理序列化和消息解析。

    如果您正在编写此类低级通信,请添加一些独特的
    messageId
    ,该ID随请求一起发送,并从服务器返回。@Konrad Kokosa低级通信是否可能重复?什么是更好的方法?例如异步
    HttpClient