【问题标题】:Cannot get second message using ReceiveAsync() in C#无法在 C# 中使用 ReceiveAsync() 获取第二条消息
【发布时间】:2014-04-26 07:56:42
【问题描述】:

我在使用 ReceiveAsync() 时遇到了麻烦。

我想从服务器获取消息。

收到了第一条消息,但是,我无法从第二条收到任何消息。

我仍在尝试找到任何解决方案,但我找不到。

我的部分客户来源如下:

    public void Recieve_Completed(object sender, SocketAsyncEventArgs e)
    {
        Socket _client = (Socket)sender;
        Msg _Msg = (Msg)e.UserToken;
        _Msg.SetLength(e.Buffer);
        _Msg.InitData();

        if (_client.Connected && e.BytesTransferred > 0)
        {

             ...

             Do sth

             ...


             _client.ReceiveAsync(e);  

        }
        else //No Message
        {
            //Connection_Timer.Enabled = true;
        }
    }

我犯了什么愚蠢的错误吗?

如果是这样,请告诉我。

提前致谢。

【问题讨论】:

    标签: c# sockets asynchronous


    【解决方案1】:

    您假设 TCP 是基于消息的。它不是。 TCP 为您提供字节流。读取可以读取任何大于零的数量。你的代码必须处理这个事实。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2022-11-10
      • 1970-01-01
      • 1970-01-01
      • 2014-11-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多