【问题标题】:UdpClient, Receive() right after Send() does not work?UdpClient,在 Send() 之后的 Receive() 不起作用?
【发布时间】:2010-09-18 07:38:21
【问题描述】:

考虑以下代码:

client.Send(data, data.Length, endpoint);
byte[] response = client.Receive(ref endpoint);

虽然,根据 WireShark(网络嗅探器),远程主机确实回复了数据, 这里的应用程序只是永远等待数据......由于某种原因它没有收到来自远程主机的答案。

有什么想法吗?

【问题讨论】:

  • 你在调用client.Connect()吗?如果是这样,它将只接受来自 Connect 方法中提供的 enpoint 的数据。
  • 你解决过这个问题吗?
  • 那是 10 年前的事了,据我所知,我使用了 @ageektrapped 的解决方案并习惯了客户。这些天来,我尽量避免直接使用 udp/tcp,而更喜欢 ZeroMQ/NetMQ 与协议缓冲区相结合的解决方案

标签: c# networking sockets udpclient


【解决方案1】:

您可能想要设置两个 UdpClients:一个用于侦听,一个用于发送。

对于接收UdpClient,使用接受端口的构造函数。

【讨论】:

    【解决方案2】:

    可能远程主机有防火墙然后无法响应请求,在发送请求之前设置

    client.Client.ReceiveTimeout = 5000; 
    

    所以当响应无法得到请求时,你有一个例外

    【讨论】:

      猜你喜欢
      • 2018-07-14
      • 2018-04-24
      • 1970-01-01
      • 2020-11-10
      • 1970-01-01
      • 2019-06-05
      • 1970-01-01
      • 1970-01-01
      • 2016-12-21
      相关资源
      最近更新 更多