【问题标题】:How to handle AsyncCallback for receiving if there is no response after Socket.BeginReceive如果 Socket.BeginReceive 之后没有响应,如何处理 AsyncCallback 以进行接收
【发布时间】:2019-04-27 14:19:37
【问题描述】:

在启动期间初始化服务器时,不会调用Socket.BeginReceive 之后的AsyncCallback

mSocket.BeginReceive(mBuffer, 0, mBuffer.Length, SocketFlags.None, new AsyncCallback(onReceive), mSocket);
private void onReceive(IAsyncResult result)
{
    if (mSocket == null) return;
    Monitor.Enter(mLockObj);
    mSocket.EndReceive(result);
    //...                       

我是否需要创建一些超时逻辑,或者是否有我可以捕获和处理的异常情况?

【问题讨论】:

    标签: c# sockets


    【解决方案1】:

    因为AsyncCallbackasync,它将无限期地等待接收直到它返回,所以不会有“超时”异常。

    this thread 中探索了一些选项,但是,要回答您的问题,您基本上必须实现自己的超时方法。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-08-14
      • 2020-03-22
      • 1970-01-01
      • 2013-04-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多