【问题标题】:Receive data of variable size in asynchronous socket communication in c#在c#中的异步套接字通信中接收可变大小的数据
【发布时间】:2013-04-02 13:48:01
【问题描述】:

我正在用 c# 编写一个应用程序。在该应用程序中我使用异步套接字通信。我编写的代码为

byte[] byteData = new byte[1024];
clientSocket.BeginReceiveFrom(byteData, 0, byteData.Length, SocketFlags.None, ref m_EpReceive, new AsyncCallback(OnRceiveCallBack), objReceiverSocketState);

在这里,我得到byteData 的可变大小意味着有时是 700 字节,有时是 276 字节(不固定)。在这里,我声明了 1024 大小的 byteData。所以我的问题是,有什么方法可以将byteData 的大小声明为接收到的确切数据量? (意味着假设我得到 500 个字节,所以 byteData 的大小应该是 500。)我也有疑问,如果我已将 byteData 的大小声明为 1024,那么它是否会等待获得总 1024 个字节,或者如果它得到一些字节然后它会调用OnRceiveCallBack 方法?请帮我。提前致谢。

【问题讨论】:

    标签: c# visual-studio-2010 sockets asynchronous udp


    【解决方案1】:

    EndReceiveFrom 会告诉你已经收到了多少字节。

    public int EndReceiveFrom(
          IAsyncResult asyncResult,
          ref EndPoint endPoint
      )
    

    正如 MSDN 所说:

    返回值
    类型:System.Int32
    如果成功,字节数 已收到。如果不成功,则返回 0。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-09-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多